Pagini recente » Cod sursa (job #2018510) | Cod sursa (job #2372684) | Cod sursa (job #946978) | Cod sursa (job #2962732) | Cod sursa (job #2262940)
#include <cstdio>
#include <deque>
using namespace std;
const int lmax=180,l=174;
deque<int>d[lmax];
int findpiece(int val)
{
int x=val/l;
if(val%l==0) --x;
return x+1;
}
void requil(int p)
{
for(;d[p].size()>l;p++)
{
d[p+1].push_front(d[p].back());
d[p].pop_back();
}
}
int main()
{
freopen ("schi.in","r",stdin);
freopen ("schi.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int val;
scanf("%d",&val);
int piece=findpiece(val);
val%=l;
if(val==0) val=l;
deque<int>::iterator it=d[piece].begin();
it+=val-1;
if(val<=d[piece].size()) d[piece].insert(it,i);
else d[piece].push_back(i);
if(d[piece].size()>l) requil(piece);
}
for(int i=1;i<=l;i++)
for(deque<int>::iterator it=d[i].begin();it!=d[i].end();++it) printf("%d\n",*it);
}