Cod sursa(job #2262940)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 17 octombrie 2018 22:30:27
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#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);
}