为什么40分wa啊,那位大佬帮帮我qwq
#include<stdio.h>
int bo[100005];
int num[300005];
struct nu
{
int t;
int n;
int l,r;
}pe[300040];
int bef;
int nn;
int cnt;
int now;
int main()
{
scanf("%d",&nn);
for(int i=1;i<=nn;i++)
{
scanf("%d",&pe[i].t);
scanf("%d",&pe[i].n);
pe[i].l=now;
now+=pe[i].n;
pe[i].r=now-1;
for(int j=pe[i].l;j<=pe[i].r;)
{
scanf("%d",&num[j]);
if(bo[num[j]]==0)cnt++;
bo[num[j]]++;
j++;
}
while(pe[i].t-pe[bef].t>=86400)
{
for(int j=pe[bef].l;j<=pe[bef].r;)
{
if(bo[num[j]]==1)cnt--;
bo[num[j]]--;
j++;
}
bef++;
}
printf("%d\n",cnt);
}
}
原70分MLE代码
#include<stdio.h>
int bo[100005];
struct nu
{
int t;
int n;
int k[30005];
}pe[10004];
int bef;
int nn;
int cnt;
int main()
{
scanf("%d",&nn);
for(int i=1;i<=nn;i++)
{
scanf("%d",&pe[i].t);
scanf("%d",&pe[i].n);
for(int j=1;j<=pe[i].n;j++)
{
scanf("%d",&pe[i].k[j]);
if(bo[pe[i].k[j]]==0)cnt++;
bo[pe[i].k[j]]++;
}
while(pe[i].t-pe[bef].t>=86400)
{
for(int j=1;j<=pe[bef].n;j++)
{
if(bo[pe[bef].k[j]]==1)cnt--;
bo[pe[bef].k[j]]--;
}
bef++;
}
printf("%d\n",cnt);
}
}