40pts求调
查看原帖
40pts求调
1127560
SR_G_B_ysqd1602楼主2024/8/13 15:02

#2,#3,#4,#5,#6,#20WA #7,#8,#9,#10,#11,#13TLE

#include<bits/stdc++.h>
using namespace std;
#define max(a,b) (a>b?a:b)
const int maxn=1e5+1;
int n,t[3*maxn-2],ans[maxn],tim,cnt,r=1,sum,k=1,m,lft=1;
struct Node{
	int r,t;
	int tm;
}a[maxn];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d%d",&a[i].tm,&a[i].r);
		if(a[i].tm-a[r].tm>=86400){
			while(a[r].tm+86400<=a[i].tm)sum+=a[r].t,r++;//删数右端点 
			for(lft;lft<=sum;lft++){//删数左端点 
				ans[t[lft]]--;//删去一次 
				if(!ans[t[lft]])cnt--;//如果没了就减 
			}
		}
		for(int j=1;j<=a[i].r;j++){
			scanf("%d",&t[++k]);
			ans[t[k]]++;//桶装一下 
			if(ans[t[k]]==1)cnt++;//如果是新的国籍就加 
		}
		printf("%d\n",cnt);
	}
	return 0;
}
2024/8/13 15:02
加载中...