제출 #444226

#제출 시각아이디문제언어결과실행 시간메모리
444226FEDIKUS곤돌라 (IOI14_gondola)C++17
55 / 100
37 ms4468 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=2.5e5+10; set<int> imam; int valid(int n, int inputSeq[]){ int tren=-1; for(int i=0;i<n;i++){ if(imam.find(inputSeq[i])!=imam.end()) return 0; imam.emplace(inputSeq[i]); if(inputSeq[i]>n){ //if(tren!=-1) tren++; if(tren>n) tren=1; continue; } if(tren==-1) tren=inputSeq[i]; else{ if(inputSeq[i]!=tren) return 0; } tren++; if(tren>n) tren=1; } return 1; } //---------------------- int treba[maxn]; int replacement(int n, int gondolaSeq[], int replacementSeq[]){ int l=0; int tren=-1; int maxi=INT_MIN; int mini=INT_MAX; for(int i=0;i<n;i++) maxi=max(maxi,gondolaSeq[i]); for(int i=0;i<n;i++) mini=min(mini,gondolaSeq[i]); int gde=-1; if(mini>n) tren=1; for(int j=0;j<2*n;j++){ int i=j%n; if(gondolaSeq[i]>n){ if(tren!=-1){ if(gondolaSeq[i]==maxi) gde=tren; treba[gondolaSeq[i]]=tren; tren++; if(tren>n) tren=1; } continue; } if(tren==-1) tren=gondolaSeq[i]; tren++; if(tren>n) tren=1; } for(int i=n+1;i<=maxi;i++){ if(treba[i]!=0){ if(i==maxi) replacementSeq[l++]=gde; else replacementSeq[l++]=treba[i]; }else{ replacementSeq[l++]=gde; gde=i; } } return l; } //---------------------- const int mod=1e9+9; int mul(int a,int b){ if(ll(a)*ll(b)>=mod) return ll(a)*ll(b)%mod; return a*b; } int pwr(int a,int b){ int ret=1; while(b){ if(b&1) ret=mul(ret,a); b>>=1; a=mul(a,a); } return ret; } int countReplacement(int n, int inputSeq[]){ int res=1; if(!valid(n,inputSeq)) return 0; int mini=INT_MAX; for(int i=0;i<n;i++) mini=min(mini,inputSeq[i]); int klk=0; set<int> koji; for(int i=0;i<n;i++){ if(inputSeq[i]>n){ klk++; koji.emplace(inputSeq[i]); } } int prosli=n; for(auto i:koji){ res=mul(res,pwr(klk,i-prosli-1)); klk--; prosli=i; } if(mini>n) res=mul(res,n); return res; } /* 9 4 1 2 7 6 */
#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...