Submission #819727

#TimeUsernameProblemLanguageResultExecution timeMemory
819727makanhuliaGondola (IOI14_gondola)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include "gondola.h" #define ll long long #define mod 1000000007 using namespace std; int n; int inputSeq[1000]; ll binpow(ll x,ll y){ if( y == 0 ) return 1; ll res = binpow(x,y/2); res *= res; res %= mod; if( y % 2 ) res *= x; return res%mod; } int replacement(int n, int inputSeq[], int replacementSeq[]){ int mn = INT_MAX; int id; for(int i = 0 ; i < n ; i++){ if( mn > inputSeq[i] ){ mn = inputSeq[i]; id = i; } } vector<int> v; mn--; id = (id-mn)%n+n; id %= n; for(int i = id ; i < n ; i++) v.push_back(inputSeq[i]); for(int i = 0 ; i < id ; i++) v.push_back(inputSeq[i]); priority_queue<pair<int,int>> pq; for(int i = 0 ; i < n ; i++){ pq.push({-v[i],i+1}); } int mx = *max_element(v.begin(),v.end()); if( mx == n ) return 0; int cur = n+1; int ti = 0; while(!pq.empty()){ int fufu = pq.top().second; while(cur <= -pq.top().first){ replacementSeq[ti] = fufu; fufu = cur; ti++; cur++; } pq.pop(); } //~ for(int i = 0; i < mx-n ; i++){ //~ cout<<replacementSeq[i]<<" "; //~ } //~ cout<<"\n"; return mx-n; } int valid(int n,int inputSeq[]){ int mn = INT_MAX; int id; map<int,int> cnt; for(int i = 0 ; i < n ; i++){ cnt[inputSeq[i]]++; if( cnt[inputSeq[i]] > 1 ) return 0; } for(int i = 0 ; i < n ; i++){ if( mn > inputSeq[i] ){ mn = inputSeq[i]; id = i; } } if( mn > n ) return 1; vector<int> v; mn--; id = (id-mn)%n+n; id %= n; for(int i = id ; i < n ; i++) v.push_back(inputSeq[i]); for(int i = 0 ; i < id ; i++) v.push_back(inputSeq[i]); for(int i = 0 ; i < n ; i++){ if( v[i] <= n && v[i] != i+1 ) return 0; } return 1; } ll countReplacement(int n, int inputSeq[]){ if(!valid(n,inputSeq)) return 0; ll mx = *max_element(inputSeq,inputSeq+n); ll u = mx; mx -= n; ll c = 0; for(int i = 0 ; i < n ; i++){ int x = inputSeq[i]; if( x > n ) { c++; mx--; } } ll fact[mx+5]; fact[0] = fact[1] = 1; for(ll i = 2; i <= n ; i++){ fact[i] = fact[i-1]*i; fact[i] %= mod; } if( u <= n ) return binpow(fact[c],mx); else return (binpow(fact[c],mx)*fact[n])%mod; } //~ int main(){ //~ ios_base::sync_with_stdio(false); //~ cin.tie(0); //~ cout.tie(0); //~ cin>>n; //~ for(int i = 0 ; i < n ; i++){ //~ cin>>inputSeq[i]; //~ } //~ cout<<countReplacement(n,inputSeq)<<"\n"; //~ }

Compilation message (stderr)

gondola.cpp:85:4: error: ambiguating new declaration of 'long long int countReplacement(int, int*)'
   85 | ll countReplacement(int n, int inputSeq[]){
      |    ^~~~~~~~~~~~~~~~
In file included from gondola.cpp:2:
gondola.h:12:5: note: old declaration 'int countReplacement(int, int*)'
   12 | int countReplacement(int n, int inputSeq[]);
      |     ^~~~~~~~~~~~~~~~