제출 #140658

#제출 시각아이디문제언어결과실행 시간메모리
140658baluteshih곤돌라 (IOI14_gondola)C++14
55 / 100
23 ms2404 KiB
#include "gondola.h" #include <bits/stdc++.h> #define jizz ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define pb push_back #define MP make_pair #define F first #define S second #define MEM(i,j) memset(i,j,sizeof i) #define ALL(v) v.begin(),v.end() #define ET cout << "\n" #define DB(a,s,e) {for(int i=s;i<e;++i) cout << a[i] << " ";ET;} using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll MOD=1e9+9; int valid(int n, int inputSeq[]) { int p=min_element(inputSeq,inputSeq+n)-inputSeq; vector<int> v(inputSeq,inputSeq+n); sort(ALL(v)); for(int i=0;i+1<n;++i) if(v[i]==v[i+1]) return 0; if(inputSeq[p]>n) return 1; for(int i=p;i<p+n;++i) if(inputSeq[i%n]<=n&&inputSeq[i%n]!=inputSeq[p]+i-p) return 0; return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { vector<int> org(n); int p=min_element(gondolaSeq,gondolaSeq+n)-gondolaSeq; if(gondolaSeq[p]>n) for(int i=0;i<n;++i) org[i]=i+1; else for(int i=p;i<p+n;++i) org[i%n]=(gondolaSeq[p]+i-p-1)%n+1; vector<pii> v; for(int i=0;i<n;++i) if(gondolaSeq[i]>n) v.pb(MP(gondolaSeq[i],i)); sort(ALL(v)); int nw=n+1,tp=0; for(pii i:v) { replacementSeq[tp++]=org[i.S]; while(nw<=i.F) replacementSeq[tp++]=nw++; --tp; } return tp; } //---------------------- ll pw(ll a,ll n) { ll re=1; for(;n;n>>=1,a=a*a%MOD) if(n&1) re=re*a%MOD; return re; } int countReplacement(int n, int inputSeq[]) { if(!valid(n,inputSeq)) return 0; ll ans=1; if(*min_element(inputSeq,inputSeq)>n) ans=n; vector<int> v; for(int i=0;i<n;++i) if(inputSeq[i]>n) v.pb(inputSeq[i]); sort(ALL(v),greater<int>()); for(int ls=n+1;!v.empty();ls=v.back()+1,v.pop_back()) ans*=pw(v.size(),v.back()-ls),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...