Submission #1229352

#TimeUsernameProblemLanguageResultExecution timeMemory
1229352kl0989eGondola (IOI14_gondola)C++20
100 / 100
37 ms5188 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pi pair<int, int> #define pl pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define fi first #define se second #define pb push_back #define all(x) (x).begin(),(x).end() int valid(int n, int s[]) { set<int> nums; int z=-1; for (int i=0; i<n; i++) { nums.insert(s[i]); if (1<=s[i] && s[i]<=n && z==-1) { z=(s[i]-i+10*n)%n; } if (1<=s[i] && s[i]<=n) { if ((s[i]-i+10*n)%n!=z) { return 0; } } } if (nums.size()!=n) { return 0; } return 1; } //---------------------- int replacement(int n, int s[], int rep[]) { int z=1; vector<pi> inds; for (int i=0; i<n; i++) { if (1<=s[i] && s[i]<=n) { z=(s[i]-i+10*n)%n; } else { inds.pb({s[i],i}); } } sort(all(inds)); int ind=0; int lstval=n+1; for (auto [val,i]:inds) { rep[ind++]=(z+i+10*n)%n+n*(((z+i)%n)==0); lstval++; while (lstval<=val) { rep[ind++]=(lstval++)-1; } } return ind; } //---------------------- const int mod=1e9+9; ll poww(ll base, ll p) { if (p==0) { return 1; } ll t=poww(base,p/2); t=(t*t)%mod; if (p&1) { return t*base%mod; } return t; } int countReplacement(int n, int s[]) { if (!valid(n,s)) { return 0; } int z=-1; vector<pi> inds; for (int i=0; i<n; i++) { if (1<=s[i] && s[i]<=n) { z=(s[i]-i+10*n)%n; } else { inds.pb({s[i],i}); } } sort(all(inds)); ll ans=1; ll last=n; for (int i=0; i<inds.size(); i++) { ans=(ans*poww(inds.size()-i,inds[i].fi-last-1))%mod; last=inds[i].fi; } if (z==-1) { ans=(ans*n)%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...