noip2016普及组海港:
queue队列解法。
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
long long from[100001],st[100001];
class pe
{
public:
long long t,cn;
};
int main()
{
queue<pe> que;
memset(from,0,sizeof(from));
int n,ans=0;
int ti,k;
int c;
scanf("%d",&n);
for(int i = 1; i <= n; ++i)
{
scanf("%d%d",&ti,&k);
for(int j=1; j <=k ; ++j)
{
scanf("%d",&c);
pe p;
p.cn=c;
p.t=ti;
if(from[c]++==0)
{
++ans;
}
que.push(p);
}
while(true)
{
if(ti-86400>=que.front().t)
{
if(--from[que.front().cn]==0)
{
--ans;
}
que.pop();
//printf("pop one %d %d\n",&p.cn ,&p.t);
}
else
{
cout<<ans<<endl;
//printf("lll\n");
break;
}
}
//ans=0;
}
}