Submission #722667

#TimeUsernameProblemLanguageResultExecution timeMemory
722667Yell0Gondola (IOI14_gondola)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MOD=1e9+9; int valid(int n,int inputSeq[]) { vector<int> ogIdx(n+2); set<int> usedNew; bool f=0; for(int i=0;i<n;++i) { if(!f&&inputSeq[i]<=n) { f=1; ogIdx[inputSeq[i]]=i; for(int j=1;j<n;++j) ogIdx[(inputSeq[i]-1+j)%n+1]=(i+j)%n; } else if(inputSeq[i]<=n) { if(ogIdx[inputSeq[i]]!=i) return 0; } else { if(usedNew.count(inputSeq[i])) return 0; usedNew.insert(inputSeq[i]); } } return 1; } int replacement(int n,int gondolaSeq[],int replacementSeq[]) { vector<pair<int,int>> news; vector<int> og(n); for(int i=0;i<n;++i) if(gondolaSeq[i]>n) news.push_back({gondolaSeq[i],i}); sort(news.begin(),news.end()); bool f=0; for(int i=0;i<n;++i) { if(gondolaSeq[i]<=n) { f=1; og[i]=gondolaSeq[i]; for(int j=1;j<n;++j) og[(i+j)%n]=(og[i]-1+j)%n+1; break; } } if(!f) for(int i=0;i<n;++i) og[i]=i+1; int repi=0,currRep=n; for(int i=0;i<news.size();++i) { replacementSeq[repi++]=og[news[i].second]; ++currRep; while(currRep<news[i].first) replacementSeq[repi++]=currRep++; } return repi; } int countReplacement(int n,int inputSeq[]) { if(!valid(n,inputSeq)) return 0; vector<int> news; for(int i=0;i<n;++i) if(inputSeq[i]>n) news.push_back(inputSeq[i]); sort(news.begin(),news.end()); auto qpow=[&](ll x,int e) { ll res=1,mult=x; for(int i=0;(1<<i)<=e;++i) { if((1LL<<i)&e) res=res*mult%MOD; mult=mult*mult%MOD; } return res; }; ll ans=(news.size()==n?n:1); int prev=n; for(int i=0;i<news.size();++i) { ans=ans*qpow(news.size()-i,news[i]-prev-1)%MOD; prev=news[i]; } return ans; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:42:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |   for(int i=0;i<news.size();++i) {
      |               ~^~~~~~~~~~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:66:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   66 |   ll ans=(news.size()==n?n:1);
      |           ~~~~~~~~~~~^~~
gondola.cpp:68:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |   for(int i=0;i<news.size();++i) {
      |               ~^~~~~~~~~~~~
/usr/bin/ld: /tmp/cc1dDt0L.o: in function `main':
grader.cpp:(.text.startup+0xb6): undefined reference to `valid'
/usr/bin/ld: grader.cpp:(.text.startup+0x108): undefined reference to `countReplacement'
/usr/bin/ld: grader.cpp:(.text.startup+0x132): undefined reference to `replacement'
collect2: error: ld returned 1 exit status