제출 #1192754

#제출 시각아이디문제언어결과실행 시간메모리
1192754NewtonabcGondola (IOI14_gondola)C++20
25 / 100
6 ms1352 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; const int N=3e5+10; int cnt[N],a[N]; int valid(int n, int inputSeq[]) { bool v=true; int mn=INT_MAX; int idx=-1; for(int i=0;i<n;i++){ cnt[inputSeq[i]]++; if(cnt[inputSeq[i]]>1) v=false; if(inputSeq[i]>n) continue; if(mn>inputSeq[i]){ mn=inputSeq[i]; idx=i; } } int now; if(idx!=-1){ now=inputSeq[idx]; for(int i=idx;i<idx+n;i++,now++){ int con=i%n; if(inputSeq[con]>n) continue; if(inputSeq[con]!=now){ v=false; } } } return v; } //---------------------- int replacement(int n, int gondolaSeq[], int ans[]) { int idx=-1; for(int i=0;i<n;i++){ if(gondolaSeq[i]>n) continue; idx=i; break; } int pt=gondolaSeq[idx]; for(int i=idx;i<idx+n;i++){ int con=(pt-1)%n+1; a[con]=gondolaSeq[i%n]; pt++; } for(int i=1;i<=n;i++){ if(a[i]<=n) continue; cnt[a[i]]=i; } int mx=*max_element(a+1,a+n+1); int now=cnt[mx]; for(int i=mx;i>n;i--){ if(cnt[i]==0) cnt[i]=now; if(cnt[i]!=now) now=cnt[i]; } // for(int i=n+1;i<=mx;i++) cout<<cnt[i] <<" "; // cout<<"\n"; int len=mx-n; for(int i=1;i<=n;i++) a[i]=i; for(int i=n+1;i<=mx;i++){ int ansidx=i-n-1; ans[ansidx]=a[cnt[i]]; a[cnt[i]]=i; } return len; } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }
#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...