这是70分代码,re了几个点
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<iomanip>
#include<string>
#include<algorithm>
#include<queue>
using namespace std;
long long m,n,k,tim,sum;
long long book[3000005],start;
struct node{
long long time;
int gj;
}a[300005];
long long maxn[300005];
int main()
{
// freopen("haigang.in","r",stdin);
// freopen("haigang.out","w",stdout);
cin>>m;
for(int i=1;i<=m;++i)
{
cin>>tim>>n;
if(i>1)
while(a[start].time<=tim-86400) {
book[a[start].gj]--;
if(book[a[start].gj]==0) sum--;
start++;
}
long long x;
for(int j=1;j<=n;++j)
{
cin>>x;
a[++k].gj=x;
a[k].time=tim;
book[x]++;
if(book[x]==1) sum++;
}
maxn[i]=sum;
}
for(int i=1;i<=m;++i)
cout<<maxn[i]<<endl;
return 0;
}
这是AC代码(看了题解改了)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<cstdlib>
#include<iomanip>
#include<string>
#include<algorithm>
#include<queue>
using namespace std;
int m,n,tim,sum;
int book[1000005];
struct node{
int time;
int gj;
};
int main()
{
scanf("%d",&m);
queue <node> q;
for(int i=1;i<=m;++i)
{
scanf("%d%d",&tim,&n);
while(!q.empty()) {
if(q.front().time<=tim-86400)
{
book[q.front().gj]--;
if(book[q.front().gj]==0) sum--;
q.pop();
}
else
break;
}
node x;
x.time=tim;
for(int i=1;i<=n;++i)
{
scanf("%d",&x.gj);
q.push(x);
book[x.gj]++;
if(book[x.gj]==1) sum++;
}
printf("%d\n",sum);
}
return 0;
}
请问dalao为什么第一次会RE?是队列出问题了?