Cod sursa(job #2945839)

Utilizator Silviu_StefanStefan Silviu Silviu_Stefan Data 24 noiembrie 2022 10:45:38
Problema Order Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
using namespace std;
int aib[30005];int n;
void update(int poz,int val){
    while(poz<=30000){
        aib[poz]+=val;poz+=poz&-poz;
    }
}
int query(int k){
    int poz=0,poz1,s=0,s1;
    for(int i=14;i>=0;i--){
        poz1=poz+(1<<i);
        if(poz1<=n){
            s1=s+aib[poz1];
            if(s1<k){
                poz=poz1;s=s1;
            }
        }
    }
    return poz+1;
}
int main()
{
    ifstream fin("order.in");
    ofstream fout("order.out");
    fin>>n;
    for(int i=1;i<=n;i++){
        update(i,1);
    }
    int poz=2,lung=n;
    for(int i=1;i<=n;i++){
        int afis=query(poz);
        fout<<afis<<" ";
        update(afis,-1);lung--;
        if(lung==0){break;}
        poz--;poz+=(i+1);
        poz%=lung;if(poz==0){poz=lung;}
    }
    fout<<'\n';
    return 0;
}