除了第一个测试点以外全TLE了
#include <bits/stdc++.h>
using namespace std;
struct basket
{
int code;
int type;
int isused;
}a[2000001];
bool cmp1(basket x,basket y)
{
if(x.isused!=y.isused)
{
return x.isused>y.isused;
}
return x.code>y.code;
}
bool cmp2(basket x,basket y)
{
return x.code<y.code;
}
void reset(basket* a,int &n,int &sum,int ×)
{
int i;
sort(a+1,a+1+n,cmp1);
n=n-sum;
times=times+sum;
sort(a+1,a+1+n,cmp2);
sum=0;
}
int n,i,p,q,cnt,t=1,sum,times;
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i].type);
a[i].code=i;
}
cnt=n;
while(times!=cnt)
{
for(i=1;i<=n;i++)
{
if(a[i].type!=a[i-1].type)
{
sum++;
printf("%d ",a[i].code);
a[i].isused=-1;
}
}
printf("\n");
reset(a,n,sum,times);
}
return 0;
}