Cod sursa(job #2313161)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 6 ianuarie 2019 10:52:33
Problema Order Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("order.in");
ofstream out("order.out");
int nr1,nr2,s,ar[400005];
void upd(int nr,int l,int r)	
{
    ar[nr]++;
    if(l==r)
        return;
    int mid=(l+r)/2;
    if(nr1<=mid)
        upd(2*nr,l,mid);
    else
        upd(2*nr+1,mid+1,r);
}
void q(int nr,int l,int r)	
{
    if(nr1<=l&&nr2>=r)
    {
        s+=ar[nr];
        return;
    }
    int mid=(l+r)/2;
    if(nr1<=mid)
        q(2*nr,l,mid);
    if(nr2>mid)
        q(2*nr+1,mid+1,r);	
}
int main()	
{
    int n,i,p=0,z=0;
    in>>n;
    for(i=1;i<=n;i++)
    {
        s=i;
        while(s)
        {
            if(p+s>=n)
            {
                nr1=p+1;nr2=n-1;
                s=p+s-n;
                q(1,0,n-1);
                p=0;
                s+=z;
            }
            nr1=p+1;nr2=p+s;
            p+=s;
            s=0;
            q(1,0,n-1);
        }
        nr1=p;
        upd(1,0,n-1);
        if(!p)
            z=1;
        out<<p+1<<" ";
    }
    return 0;	
}