Submission #31695

#TimeUsernameProblemLanguageResultExecution timeMemory
31695top34051Gondola (IOI14_gondola)C++14
75 / 100
43 ms7392 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; #define maxn 100005 #define mod 1000000009LL int n,m,mx; int a[maxn], vis[250005]; map<int,int> s; int valid(int N, int p[]) { int i, x = 0, val; n = N; //Build for(i=0;i<n;i++) if(p[i]<=n) x = i; val = p[x]; for(i=0;i<n;i++) a[x] = val, x = (x+1)%n, val = val%n+1; //Check for(i=0;i<n;i++) if(p[i]<=n && a[i]!=p[i]) return 0; //Rep memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) { if(vis[p[i]]) return 0; vis[p[i]] = 1; } return 1; } int replacement(int N, int p[], int res[]) { int i, x=-1, val; n = N; //Build for(i=0;i<n;i++) if(p[i]<=n) x = i; if(x==-1) val = 1, x = 0; else val = p[x]; for(i=0;i<n;i++) a[x] = val, x = (x+1)%n, val = val%n+1; //Check for(i=0;i<n;i++) { mx = max(mx,p[i]); if(p[i]>n) s[p[i]] = i; } m = 0; for(i=n+1;i<=mx;i++) { if(s.find(i)!=s.end()) res[m++] = a[s[i]], a[s[i]] = i, s.erase(s.find(i)); else if(s.size()>0) res[m++] = a[s.begin()->second], a[s.begin()->second] = i; else return 0; } return m; } int countReplacement(int N, int p[]) { int i, x=-1, val; long long ans; n = N; //Build for(i=0;i<n;i++) if(p[i]<=n) x = i; if(x==-1) val = 1, x = 0; else val = p[x]; for(i=0;i<n;i++) a[x] = val, x = (x+1)%n, val = val%n+1; //Check for(i=0;i<n;i++) if(p[i]<=n && a[i]!=p[i]) return 0; //Rep memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) { if(vis[p[i]]) return 0; vis[p[i]] = 1; } //Check for(i=0;i<n;i++) { mx = max(mx,p[i]); if(p[i]>n) s[p[i]] = i; } m = 0; ans = 1; for(i=n+1;i<=mx;i++) { if(s.find(i)!=s.end()) s.erase(s.find(i)); else if(s.size()>0) ans = ((ans*s.size())%mod + mod)%mod; else return 0; } return ans; }
#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...