Submission #576899

#TimeUsernameProblemLanguageResultExecution timeMemory
576899mosiashvililukaGondola (IOI14_gondola)C++14
100 / 100
69 ms12872 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; long long a,b,c,d,e,i,j,ii,jj,zx,xc,f[300009],pi,ee,WA,pas,mod=1000000009LL,p[300009]; map <long long, long long> fx; int valid(int Nn, int inputSeq[]) { a=Nn; for(i=1; i<=a; i++) f[i]=inputSeq[i-1]; set <int> SAE; for(i=1; i<=a; i++){ if(f[i]<=a){ c=f[i]-i+a*2;c%=a; SAE.insert(c); } } if(SAE.size()>=2) return 0; for(i=1; i<=a; i++){ if(fx[f[i]]!=0) return 0; fx[f[i]]=1; } return 1; } //---------------------- int replacement(int Nn, int gondolaSeq[], int replacementSeq[]) { a=Nn;WA=1; for(i=1; i<=a; i++){ f[i]=gondolaSeq[i-1]; } for(i=1; i<=a; i++){ if(f[i]>a){ fx[f[i]]=i; if(e<f[i]){ e=f[i];ee=i; } }else{ WA=f[i]-i; } } for(i=1; i<=a; i++){ f[i]=WA+i+a*3;f[i]%=a; if(f[i]==0) f[i]=a; } for(i=a+1; i<=e; i++){ if(fx[i]==0){ replacementSeq[pi]=/*ee*/f[ee]; f[ee]=i; }else{ c=fx[i]; replacementSeq[pi]=/*fx[i]*/f[c]; } pi++; } return pi; } long long xar(long long q, long long w){ if(w==0) return 1LL; long long qw=xar(q,w/2); if(w%2==0) return (qw*qw)%mod; else return ((qw*qw)%mod*q)%mod; } //---------------------- int countReplacement(int Nn, int inputSeq[]) { a=Nn; for(i=1; i<=a; i++) f[i]=inputSeq[i-1]; set <int> SAE; for(i=1; i<=a; i++){ if(f[i]<=a){ c=f[i]-i+a*2;c%=a; SAE.insert(c); } } if(SAE.size()>=2) return 0; for(i=1; i<=a; i++){ if(fx[f[i]]!=0) return 0; fx[f[i]]=1; } pas=1;pi=1; p[pi]=a; for(i=1; i<=a; i++){ if(f[i]>a){ pi++;p[pi]=f[i]; } } sort(p+1,p+pi+1); e=0; for(i=1; i<=a; i++) e=max(e,f[i]); if(e==a) return 1; /*for(i=a+1; i<=e; i++){ if(fx[i]!=fx[i+1]){ }else{ pas*=fx[i];pas%=mod; } }*/ for(i=1; i<pi; i++){ d=p[i+1]-p[i]-1; pas*=xar(pi-i,d);pas%=mod; } zx=0; for(i=1; i<=a; i++) if(f[i]<=a) zx++; if(zx==0){ pas*=a;pas%=mod; } return pas; }
#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...