
代码:
#include<bits/stdc++.h>
using namespace std;
int n,t,k,s,q,ans,l=1,x[10000009],y[10000009],z[10000009];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&t,&k);
for(int j=1;j<=k;j++)
{
scanf("%d",&s);
q++;
x[q]=t;
y[q]=s;
z[s]++;
if(z[s]==1)ans++;
}
if(t-x[l]>=86400)
for(;;)
{
s=y[l];
z[s]--;
if(z[s]==0)ans--;
l++;
if(t-x[l]<86400)break;
}
printf("%d\n",ans);
}
return 0;
}
/*
4
1 4 1 2 2 3
3 2 2 3
86401 2 3 4
86402 1 5
*/
下标,而且要用格式化输入和输出。
该C++代码段读取时间戳(t)和对应的k值,然后处理一系列s值。它维护了三个数组x,y,z和一个计数器ans。当t-x[l]大于等于86400时,更新计数器并前进。程序最终输出计数器的值。
5047

被折叠的 条评论
为什么被折叠?



