Cod sursă (job #784260)

Utilizator avatar avram.popa Avram-Popa avram.popa IP ascuns
Problemă Arbperm Compilator c-32 | 0,86 kb
Rundă Arhiva de probleme Status evaluat
Dată 21 aug. 2024 15:45:45 Scor 0
#include <stdio.h>
#include <stdlib.h>
int v[100000],b[100000];
int main() {
    FILE *fin,*fout;
    int n,k,t,p;
    fin=fopen("arbperm.in","r");
    fscanf(fin,"%d%d",&n,&k);
    for(int i=0; i<n; i++) {
        fscanf(fin,"%d",&v[i]);
    }
    fclose(fin);
    t=k;
    p=n;
    while(t>0) {
        int i=0;
        while(v[i]!=p) {
            t+=(v[i]<p);
            i++;
        }
        b[n-p]=t%p;
        p--;
        t/=(p+1);
    }
    t=0;
    for(int i=0; i<n; i++) {
        if(v[i]<p) {
            v[t++]=v[i];
        }
    }
    p++;
    while(p<=n) {
        for(int i=p-2; i>=b[n-p]; i--) {
            v[i+1]=v[i];
        }
        p++;
        v[b[n-p+1]]=p-1;
    }
    fout=fopen("arbperm.out","w");
    for(int i=0; i<n; i++) {
        fprintf(fout,"%d ",v[i]);
    }
    fclose(fout);
    return 0;
}