Submission #110815

#TimeUsernameProblemLanguageResultExecution timeMemory
110815IVIosabGondola (IOI14_gondola)C++17
30 / 100
15 ms1280 KiB
#include <bits/stdc++.h> #include "gondola.h" using namespace std; int MOD = 1e9 + 9; long long fast_power(long long base, long long power) { long long result = 1; while (power > 0) { if (power % 2 == 1) { result = (result * base) % MOD; } base = (base * base) % MOD; power = power / 2; } return result; } int mp[250005]; int valid(int n, int inputSeq[]) { int fx = 0,ind=0,val=0; for (int i = 0; i < n; i++) { int x = inputSeq[i]; if(mp[x]==1){ return 0; } mp[x]=1; if (x > n) { fx++; } if(x<=n){ ind=i; val=x; } } if (fx == n) { return 1; } for(int i=ind;i<ind+n;i++){ int x=inputSeq[i%n]; if(x>n){ inputSeq[i%n]=val; } else{ if(x!=val){ return 0; } } val++; if(val>n){ val=1; } } return 1; } int ar[250005]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int mx = 0; for (int i = 0; i < n; i++) { int x = gondolaSeq[i]; mx = max(mx, x); ar[x] = 1; } int cnt = 0; for (int i = 1; i <= mx; i++) { if (ar[i] == 0) { replacementSeq[cnt] = i; cnt++; } } return cnt; } int countReplacement(int n, int inputSeq[]) { int mx = 0; long long ret = 1; vector<int> flex; flex.push_back(-1); int fx = 0; for (int i = 0; i < n; i++) { int x = inputSeq[i]; mx = max(mx, x); if (x > n) { fx++; flex.push_back(x - n); } } int val = valid(n, inputSeq); if (val) { if (mx == n) { return 1; } } else { return 0; } if (fx == n) { return fx; } int mul = flex.size() -1 ; sort(flex.begin(), flex.end()); for (int i = 1; i < flex.size(); i++) { int x = flex[i - 1] + 1; ret *= fast_power(mul, ((flex[i] - x) - 1)); ret %= MOD; } return ret % MOD; }

Compilation message (stderr)

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:100:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 1; i < flex.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...