#include <bits/stdc++.h>
using namespace std;
struct fruit{
short type;
int ID;
};
list<fruit> m;
int n,type;
short a;
int main()
{
scanf("%d",&n);
for(int i = 0;i<n;i++){
scanf("%hd",&a);
fruit b{a,i+1};
m.push_back(b);
}
while(!m.empty()){
type = 2;
for(list<fruit>::iterator iter = m.begin();iter != m.end();iter++){
if(type != iter->type){
type = iter->type;
printf("%d ",iter->ID);
m.erase(iter--);
}
}
printf("\n");
}
return 0;
}
如代码,在朴素O(N^2)算法基础上加入链表优化,使得每次O(N)搜寻块的复杂度下降一点,近似复杂度为O(1/2*N^2)
但就算这样优化还是70ptQAQ