记录编号 |
440163 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[NOIP 2016PJ]海港 |
最终得分 |
100 |
用户昵称 |
CSU_Turkey |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
2.140 s |
提交时间 |
2017-08-22 19:31:30 |
内存使用 |
4.13 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int inf=100005;
int n,t[inf],a[inf*3],f[3*inf];
vector<int>b[inf];
int lowbit(int x){
return x&(-x);
}
void change(int x,int y){
for(int i=x;i<=100000;i+=lowbit(i)){
f[i]+=y;
}
}
int sum(){
int ans=0;
for(int i=100000;i>0;i-=lowbit(i)){
ans+=f[i];
}
return ans;
}
int main()
{
freopen("port.in","r",stdin);
freopen("port.out","w",stdout);
// freopen("1.txt","r",stdin);
scanf("%d",&n);
int h=0;
for(int i=1;i<=n;i++){
scanf("%d",&t[i]);
int k;
scanf("%d",&k);
for(int j=1;j<=k;j++){
int x;
scanf("%d",&x);
b[i].push_back(x);
a[x]++;
if(a[x]==1){
change(x,1);
}
}
while(t[h]+86400<=t[i]){
int size=b[h].size();
for(int j=0;j<size;j++){
a[b[h][j]]--;
if(!a[b[h][j]]){
change(b[h][j],-1);
}
}
h++;
}
cout<<sum()<<endl;
}
return 0;
}