제출 #902803

#제출 시각아이디문제언어결과실행 시간메모리
902803Sir_Ahmed_Imran곤돌라 (IOI14_gondola)C++17
75 / 100
31 ms5724 KiB
///~~~LOTA~~~/// #include "gondola.h" #include <bits/stdc++.h> using namespace std; #define nl '\n' #define ff first #define ss second #define ll long long #define append push_back #define pii pair<int,int> #define all(x) (x).begin(),(x).end() #define MAXN 250001 ll mod=1e9+9; int vis[MAXN]; int valid(int n, int a[]){ for(int i=0;i<n;i++){ if(a[i]>n) continue; vis[a[i]]=1; for(int j=i+1;j<i+n;j++){ if(vis[a[j%n]]) return 0; vis[a[j%n]]=1; if(a[j%n]>n) continue; if(a[j%n]!=1+((a[i]+j-i-1)%n)) return 0; } return 1; } for(int i=0;i<n;i++){ if(vis[a[i]]) return 0; vis[a[i]]=1; } return 1; } int replacement(int n,int a[],int v[]){ int m,o; set<pii> s; for(int i=m=o=0;i<n;i++){ m=max(m,a[i]); if(a[i]>n) continue; for(int j=i+1;j<i+n;j++){ m=max(m,a[j%n]); if(a[j%n]>n) s.insert({a[j%n],1+((a[i]+j-i-1)%n)}); } o=1; break; } pii pi; if(!o) for(int i=0;i<n;i++) s.insert({a[i],i+1}); o=0; for(int i=n+1;i<=m;i++){ pi=*s.begin(); s.erase(s.begin()); v[o]=pi.ss; pi.ss=i; o++; if(pi.ss!=pi.ff) s.insert(pi); } return o; } int countReplacement(int n,int a[]){ if(!valid(n,a)) return 0; int m; set<int> s; for(int i=m=0;i<n;i++){ m=max(m,a[i]); if(a[i]>n) s.insert(a[i]); } ll o=1; for(int i=n+1;i<=m;i++){ if(*s.begin()==i) s.erase(s.begin()); else o=(o*s.size())%mod; } return o; }
#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...