Submission #48742

#TimeUsernameProblemLanguageResultExecution timeMemory
48742dooweyGondola (IOI14_gondola)C++14
20 / 100
16 ms2172 KiB
#include <bits/stdc++.h> #include "gondola.h" using namespace std; typedef pair<int,int> pii; #define fi first #define se second #define mp make_pair const int N = (int)25e4 + 1293; int valid(int n, int inputSeq[]) { int cnt[N]; for(int j = 0;j < N;j ++ ) cnt[j] = 0; int rest[n]; int maz = (int)4e5 + 12345; for(int i = 0; i < n;i ++){ cnt[inputSeq[i]]++; if(cnt[inputSeq[i]] >= 2) return 0; maz = min(maz, inputSeq[i]); rest[i] = inputSeq[i]; } if(maz > n) return 1; int p,j; for(int i = 0;i < n;i ++ ){ if(rest[i] <= n){ p = rest[i]+1; j = i+1; j %= N; while(p <= n){ rest[j] = p; p++; j++; j%=n; } p = 1; while(p < rest[i]){ rest[j] = p; j++; j %= n; p++; } break; } } for(int i = 0; i < n;i ++){ if(inputSeq[i] <= n){ if(rest[i] != inputSeq[i]) return 0; } } return 1; } //---------------------- int replacement(int n, int gondolas[], int replacementSeq[]) { bool ok = false; for(int i = 0;i < n;i ++) if(gondolas[i] <= n) ok = true; if(!ok){ int sz = 0; for(int i = 1;i <= n;i ++){ replacementSeq[sz] = i; sz++; } int ii = n + 1; sort(gondolas,gondolas + n); for(int j = 0;j < n;j ++ ){ while(ii < gondolas[j]){ replacementSeq[sz] = ii; sz++; ii++; } ii = gondolas[j] + 1; } return sz; } int original[n]; int p,ls; for(int i = 0;i < n;i ++){ if(gondolas[i] <= n){ original[i] = gondolas[i]; ls = original[i] + 1; p = i + 1; while(ls <= n){ original[p] = ls; ls++; p ++; p %= n; } ls = 1; while(ls < gondolas[i]){ original[p] = ls; p++; p %= n; ls++; } } } vector<pii>sq; int sz = 0; int ii = n + 1; for(int i = 0;i < n; i ++){ if(original[i] < gondolas[i]) sq.push_back(mp(gondolas[i],i)); } sort(sq.begin(),sq.end()); for(auto x : sq){ while(original[x.se] < gondolas[x.se]){ replacementSeq[sz] = original[x.se]; original[x.se] = ii; sz++; ii++; } } return sz; } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }
#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...