Submission #16441

#TimeUsernameProblemLanguageResultExecution timeMemory
16441atomzenoGondola (IOI14_gondola)C++98
60 / 100
18 ms7336 KiB
#include "gondola.h" #define MOD 1000000009 #include<algorithm> using namespace std; #define MX 250001 int d[MX],check[MX],D[MX]; int l,ind; int valid(int n, int inputSeq[]){ int i,cnt=0,ind; for(i=0;i<=250000;i++){ check[i]=0; } for(i=0;i<n;i++){ if(inputSeq[i]<=n){ cnt=1; ind=(inputSeq[i]-1-i)+n; ind%=n; break; } } for(i=0;i<n;i++){ check[inputSeq[i]]++; if(check[inputSeq[i]]>=2){return 0;} } if(cnt==0){return 1;} for(i=0;i<n;i++){ d[(ind+i)%n]=inputSeq[i]; } for(i=0;i<n;i++){ if(d[i]<=n&&d[i]!=(i+1)){ return 0; } } return 1; } struct DT{ int x,y; bool operator<(const DT&r)const{ return r.x>x; } }make[MX]; int replacement(int n, int gondolaSeq[], int replacementSeq[]){ int ll=0,o=n,flag=0,indin,i,j; for(i=0;i<n;i++){ if(gondolaSeq[i]<=n){ flag=1; indin=gondolaSeq[i]; break; } } if(flag==0){indin=1;} for(j=i;j<i+n;j++){ make[j%n].x=gondolaSeq[j%n]; if(indin>n){indin-=n;} make[j%n].y=indin++; } sort(make,make+n); for(i=0;i<n;){ if(make[i].y>=make[i].x){ i++; continue; } replacementSeq[ll++]=make[i].y; make[i].y=++o; } return ll; } long long int p,pp; long long int a[41]; //---------------------- long long int calc(int x,int y){//x의 y승 int i; a[0]=x%MOD; if(y==0){ return 1; } for(i=1;i<=39;i++){ p=(a[i-1]*a[i-1]); a[i]=p%MOD; } p=1; for(i=0;i<=39;i++){ if((y&(1<<i))!=0){ p=p*a[i]; p=p%MOD; } } return p%MOD; } int countReplacement(int n, int inputSeq[]){ int o=n,lll=0,i; pp=1; if(valid(n,inputSeq)==0){return 0;} for(i=0;i<n;i++){ if(inputSeq[i]>n){ D[lll++]=inputSeq[i]; } } sort(D,D+lll); pp=1; for(i=0;i<lll;i++){ pp*=calc(lll-i,D[i]-o-1); o=D[i]; pp%=MOD; } return pp; }
#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...