记录编号 | 440163 | 评测结果 | AAAAAAAAAAAAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2016PJ]海港 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | 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; }