Submission #382701

#TimeUsernameProblemLanguageResultExecution timeMemory
382701TrunktyGondola (IOI14_gondola)C++14
60 / 100
24 ms3180 KiB
#include <iostream> #include <algorithm> #include <vector> #include <cmath> #include "gondola.h" using namespace std; int valid(int n, int inputSeq[]){ vector<int> ck={}; for(int i=0;i<n;i++){ ck.push_back(inputSeq[i]); } sort(ck.begin(),ck.end()); for(int i=1;i<ck.size();i++){ if(ck[i]==ck[i-1]){ return 0; } } int ind=0; for(int i=0;i<n;i++){ if(inputSeq[i]<=n){ ind = i-(inputSeq[i]-1); if(ind<0){ ind += n; } break; } } int now = 1; for(int i=ind;i<n;i++){ if(inputSeq[i]<=n){ if(inputSeq[i]!=now){ return 0; } } now++; } for(int i=0;i<ind;i++){ if(inputSeq[i]<=n){ if(inputSeq[i]!=now){ return 0; } } now++; } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]){ int ind=0; for(int i=0;i<n;i++){ if(gondolaSeq[i]<=n){ ind = i-(gondolaSeq[i]-1); if(ind<0){ ind += n; } break; } } int have[250005],maxi=-1,pos=0; for(int i=1;i<250005;i++){ have[i] = -1; } for(int i=0;i<n;i++){ have[gondolaSeq[i]] = ((i-ind+n)%n)+1; if(gondolaSeq[i]>maxi){ maxi = gondolaSeq[i]; pos = ((i-ind+n)%n)+1; } } for(int i=n+1;i<maxi;i++){ if(have[i]==-1){ replacementSeq[i-n-1] = pos; pos = i; } else{ replacementSeq[i-n-1] = have[i]; } } replacementSeq[maxi-n-1] = pos; return maxi-n; } long long mod=1000000009; long long fastpow(long long base, long long exp){ long long pow2[33]; pow2[0] = base; for(int i=1;i<=32;i++){ pow2[i] = pow2[i-1]*pow2[i-1]; pow2[i] = pow2[i]%mod; } long long ans=1,now=0; for(int i=32;i>=0;i--){ if(now+pow(2,i)<=exp){ now += pow(2,i); ans *= pow2[i]; ans = ans%mod; } } return ans; } int countReplacement(int n, int inputSeq[]){ if(not valid(n,inputSeq)){ return 0; } long long ans=1; vector<long long> have={}; bool allbreak=true; for(int i=0;i<n;i++){ if(inputSeq[i]<=n){ allbreak = false; } } if(allbreak){ ans = n; } int k = ans; return k; }

Compilation message (stderr)

gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:14:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |  for(int i=1;i<ck.size();i++){
      |              ~^~~~~~~~~~
#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...