【NOIP2015模拟11.4】刷题计划
Description
Input
Output
Sample Input
10000 12
2 1
3
2 9999
3
1 1
3
2 1
3
2 10000
3
2 9999
3
Sample Output
1
9999 1
9999
9999
10000 9999
9999 10000
Data Constraint
反思&题解
比赛&正解思路: 可以看到m非常非常的小 (出题人良心) ,直接
暴力模拟
反思: 感动终于有一道签到题了
CODE
#include<bits/stdc++.h>//原谅我一道水题的程序又臭又长……
using namespace std;
long long n,m,xx[105][2],tot,bz[105],ans[105],sum,a[105];
int main()
{
freopen("problem.in","r",stdin);
freopen("problem.out","w",stdout);
scanf("%lld%lld",&n,&m);
long long i;
for (i=1;i<=m;i++)
{
long long x,y;
scanf("%lld",&x);
xx[i][0]=x;
if (x!=3)
{
scanf("%lld",&y);
xx[i][1]=y;
long long j;
bool flag=false;
for (j=1;j<=tot;j++)
{
if (a[j]==y)
{
flag=true;
break;
}
}
if (!flag) a[++tot]=y;
}
}
for (i=1;i<=tot;i++)
bz[i]=1;
for (i=1;i<=m;i++)
{
if (xx[i][0]==1)
{
long long j,now;
for (j=1;j<=tot;j++)
{
if (a[j]==xx[i][1])
{
now=j;
break;
}
}
if (bz[now]==2)
{
for (j=1;j<=sum;j++)
{
if (ans[j]==xx[i][1])
{
long long t=j,k;
for (k=t;k<=sum-1;k++)
ans[k]=ans[k+1];
sum--;
break;
}
}
}
bz[now]=3;
}
else if (xx[i][0]==2)
{
long long j,now;
for (j=1;j<=tot;j++)
{
if (a[j]==xx[i][1])
{
now=j;
break;
}
}
if (bz[now]==1)
{
sum++;
for (j=sum;j>=2;j--)
ans[j]=ans[j-1];
ans[1]=a[now];
bz[now]=2;
}
else if (bz[now]==2)
{
for (j=1;j<=sum;j++)
{
if (ans[j]==xx[i][1])
{
long long t=j,k;
for (k=t;k>=2;k--)
ans[k]=ans[k-1];
ans[1]=xx[i][1];
break;
}
}
}
}
else
{
if (sum>20)
{
long long j;
for (j=1;j<=20;j++)
printf("%lld ",ans[j]);
printf("\n");
}
else
{
long long j;
for (j=1;j<=sum;j++)
printf("%lld ",ans[j]);
printf("\n");
}
}
}
return 0;
}