Cod sursa(job #3265375)

Utilizator PetruApostolApostol Mihnea Petru PetruApostol Data 29 decembrie 2024 19:30:48
Problema Order Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;

ifstream cin("order.in");
ofstream cout("order.out");

int n,aib[30002];
void update(int poz,int val){
    while(poz<=n){
        aib[poz]+=val;
        poz+=(poz&-poz);
    }
}
int query(int poz){
    int rasp=0;
    while(poz>0){
        rasp+=aib[poz];
        poz-=(poz&-poz);
    }
    return rasp;
}
int cautbin(int a){
    int st=1,dr=n,rasp=0;
    while(st<=dr){
        int mij=(st+dr)/2;
        if(query(mij)>=a){
            rasp=mij;dr=mij-1;
        }else st=mij+1;
    }
    return rasp;
}
int main()
{
    int a,i,cn,aux;
    cin>>n;cn=n;
    for(i=1;i<=n;i++)
        update(i,1);
    a=2;
    for(i=1;i<=n;i++){
        aux=cautbin(a);
        update(aux,-1);
        ///cout<<aux<<" ";
        cn--;a+=i;
        if(cn) a=(a-1)%cn+1;
    }
    return 0;
}