题解

凌艺樽  •  4个月前


#include<bits/stdc++.h>
#pragma GCC optimize(3)
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
const int N=1e5+10;
const int INF=0x3f3f3f3f;
int n,f[N],ans,k,mt;
struct people{
	int t;//Arrive_the_time
	int cn;//Which_country
}a[300010];
int main()
{
	IOS;
	cin>>n;
	long long p=0,len=1;
	//将人排队,相当于队列 
	for(int i=1;i<=n;++i)
	{
		cin>>mt>>k;//存人的时间 
		for(int j=1;j<=k;++j)
		{
			p++;
			cin>>a[p].cn;//存人的国籍 
			if(f[a[p].cn]==0)
			{
				ans++;
			}
			f[a[p].cn]++;
			a[p].t=mt;
			
		}
		while(a[p].t-a[len].t>=86400)
		{
			f[a[len].cn]--;
			if(f[a[len].cn]==0)
			{
				ans--;
			}
			len++;
		}
		cout<<ans<<endl;
	}
    return 0;
}


评论: