Cod sursa(job #2313170)

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