제출 #67266

#제출 시각아이디문제언어결과실행 시간메모리
67266theknife2001곤돌라 (IOI14_gondola)C++17
75 / 100
23 ms2988 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; const int N=250055; int a[N]; int b[N]; int valid(int n, int inputSeq[]) { int j=0,x=1e9; for(int i=0;i<n;i++) { a[inputSeq[i]]++; if(x>inputSeq[i]) { x=inputSeq[i]; j=i; } if(a[inputSeq[i]]>1) return 0; } x++; for(int i=j+1;i<n;i++) { if(inputSeq[i]<=n) { if(inputSeq[i]==x) { x++; continue ; } return 0; } if(x>n) x=1; if(a[x]==0) x++; else return 0; } if(x>n) x=1; for(int i=0;i<j;i++) { if(inputSeq[i]<=n) { if(inputSeq[i]==x) { x++; continue ; } return 0; } if(a[x]==0) x++; else return 0; } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { bool q=0; for(int i=0;i<n;i++) { a[gondolaSeq[i]]=i+1; if(!q&&gondolaSeq[i]<=n) { q=1; int x=gondolaSeq[i]; for(int j=i;j<n;j++) { b[j]=x; x++; if(x>n) x=1; } for(int j=0;j<i;j++) { b[j]=x++; if(x>n) x=1; } } } if(!q) for(int i=0;i<n;i++) b[i]=i+1; int x=n+1; int j=0; for(int i=n+1;i<N;i++) { if(!a[i]) continue ; a[i]--; while(b[a[i]]!=i) { replacementSeq[j++]=b[a[i]]; b[a[i]]=x; x++; } } return j; } int m=1e9+9; long long pow(long long x, int i) { if(i%2) return (pow(x,i-1)*x)%m; if(i==0) return 1; long long y=pow(x,i/2)%m; return (y*y)%m; } int countReplacement(int n, int inputSeq[]) { if(!valid(n,inputSeq)) return 0; bool q=0; memset(a,0,sizeof a); for(int i=0;i<n;i++) a[inputSeq[i]]=i+1; if(!q) for(int i=0;i<n;i++) b[i]=i+1; int x=n+1; long long ans=1; long long cnt=0; for(int i=n+1;i<N;i++) if(a[i]) cnt++; int last=n; for(int i=n+1;i<N;i++) { if(!a[i]||cnt==0) continue ; a[i]--; ans*=pow(cnt,(inputSeq[a[i]]-last)-1); ans%=m; last=inputSeq[a[i]]; cnt--; } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:137:9: warning: unused variable 'x' [-Wunused-variable]
     int x=n+1;
         ^
#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...