제출 #1308293

#제출 시각아이디문제언어결과실행 시간메모리
1308293Rares곤돌라 (IOI14_gondola)C++20
55 / 100
11 ms6084 KiB
#include <bits/stdc++.h>
#include "gondola.h"
using namespace std;
/**ifstream fin ("date.in");
ofstream fout ("date.out");
#define cin fin
#define cout fout**/

const int MAXN=1e6+10;
const int MOD=1e9+9;

int f[MAXN],f2[MAXN];

int valid (int n, int a[]){
    int x=-1;
    for (int i=n;i>=1;--i){
        a[i]=a[i-1];
    }
    for (int i=1;i<=n;++i){
        if (f2[a[i]]) return false;
        f2[a[i]]++;
        if (a[i]>n) continue;
        int crt=a[i]-i;
        if (crt<0) crt+=n;
        if (x==-1){
            x=crt;
        }
        else{
            if (x!=crt) return 0;
        }
    }
    return 1;
}
int val[MAXN];
int replacement(int n, int a[], int b[]){
    int crt=-1;
    for (int i=n;i>=1;--i){
        a[i]=a[i-1];
    }
    for (int i=1;i<=n;++i){
        if (a[i]<n){
            crt=a[i]-i;
            if (crt<0) crt+=n;
        }
    }
    if (crt==-1){
        int maxx=0,pcrt=1;
        for (int i=1;i<=n;++i){
            val[a[i]]=i;
            if (maxx<a[i]){
                maxx=a[i];
                pcrt=i;
            }
            a[i]=i;
        }

        for (int i=n+1;i<=maxx;++i){
            if (val[i]){
                b[i-n-1]=a[val[i]];
                a[val[i]]=i;
            }
            else{
                b[i-n-1]=a[pcrt];
                a[pcrt]=i;
            }
        }
        return maxx-n;
    }

    int maxx=0,pcrt=0;
    for (int i=1;i<=n;++i){
        if (a[i]>maxx){
            maxx=a[i];
            pcrt=i;
        }
        if (a[i]>n){
            int p=crt+i;
            if (p>n) p-=n;
            val[a[i]]=i;
            a[i]=p;
        }
    }

    for (int i=n+1;i<=maxx;++i){
        if (val[i]){
            b[i-n-1]=a[val[i]];
            a[val[i]]=i;
        }
        else{
            b[i-n-1]=a[pcrt];
            a[pcrt]=i;
        }
    }
    /**cout <<maxx-n<<'\n';
    for (int i=0;i<maxx-n;++i){
        cout <<b[i]<<' ';
    }**/
    return maxx-n;

}

int countReplacement(int n, int inputSeq[]){

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...