Submission #716180

#TimeUsernameProblemLanguageResultExecution timeMemory
716180BaytoroGondola (IOI14_gondola)C++17
100 / 100
58 ms5972 KiB
#include "gondola.h" #include <bits/stdc++.h> //#include "grader.cpp" using namespace std; int valid(int n, int a[]){ map<int,int> mp; for(int i=0;i<n;i++){ if(mp[a[i]]!=0) return 0; mp[a[i]]=1; } vector<pair<int,int>> v; for(int i=0;i<n;i++){ if(a[i]<=n){ v.push_back({a[i],i}); } } sort(v.begin(),v.end()); for(int i=1;i<(int)v.size();i++){ int k=(v[i].first-v[i-1].first); int s=(v[i].second-v[i-1].second+n)%n; if(k!=s) return 0; } return 1; } //---------------------- bool cmp(pair<int,int> a, pair<int,int> b){ return a.second<b.second; } int replacement(int n, int a[], int ans[]){ for(int i=0;i<n;i++) a[i]--; bool ok=0; vector<pair<int,int>> v; for(int i=0;i<n;i++){ if(a[i]<n){ ok=1; for(int j=1;j<n;j++){ if(a[(j+i)%n]>=n){ v.push_back({(a[i]+j)%n,a[(i+j)%n]}); } } break; } } if(!ok && v.empty()){ for(int i=0;i<n;i++) v.push_back({i,a[i]}); } sort(v.begin(),v.end(),cmp); int cnt=0; for(auto it: v){ int l=it.first,r=it.second; while(l!=r){ ans[cnt]=l+1; l=n+cnt; cnt++; } } return cnt; } #define ll long long //---------------------- const int mod=1e9+9; ll binpow(ll a, ll b){ if(b==0) return 1; if(b%2) return (binpow(a,b-1)*a)%mod; ll k=binpow(a,b/2); return (k*k)%mod; } int countReplacement(int n, int a[]){ if(!valid(n,a)) return 0; ll ans=1,c=0; vector<int> v; for(int i=0;i<n;i++){ if(a[i]>n) {v.push_back(a[i]);c++;} } if((int)v.size()==n) ans=n; sort(v.begin(),v.end()); for(int i=0;i<(int)v.size();i++){ int x; if(i==0) x=v[i]-n-1; else x=v[i]-v[i-1]-1; ans*=binpow(c--,x); ans%=mod; } 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...