求大佬帮忙QAQ-
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<int> fruit(n);
for(int c=0;c<n;c++)//输入
{
cin>>fruit[c];
}
vector<vector<int> > tong;
vector<int> fruit_arr;
int irr=-1;
for(int c=0;c<n;c++)//装桶
{
if(irr==-1||irr==fruit[c])
{
fruit_arr.push_back(c+1);
irr=fruit[c];
}
else
{
reverse(fruit_arr.begin(),fruit_arr.end());//因为我记得vector删除要把之后的全部往前提升一位所以就直接翻转了
tong.push_back(fruit_arr);
fruit_arr.clear();
fruit_arr.push_back(c+1);
irr=fruit[c];
}
}
if(!fruit_arr.empty())//最后一个
{
reverse(fruit_arr.begin(),fruit_arr.end());
tong.push_back(fruit_arr);
}
while(tong.size()>0)//循环桶
{
int j=-1;
for(int i=0;i<tong.size();i++)
{
if(j!=fruit[tong[i].back()-1]&&!tong[i].empty())//与之前的桶不是一类并且不是空桶
{
cout<<tong[i].back()<<" ";
j=fruit[tong[i].back()-1];
tong[i].pop_back();
}
}
cout<<"\n";
tong.erase(remove_if(tong.begin(), tong.end(), [](const vector<int>& v) { return v.empty(); }), tong.end());
}
return 0;
}