Submission #1019829

#TimeUsernameProblemLanguageResultExecution timeMemory
1019829NValchanovGondola (IOI14_gondola)C++17
55 / 100
32 ms5952 KiB
#include <bits/stdc++.h> #include "gondola.h" #define endl '\n' using namespace std; typedef long long ll; int valid(int n, int a[]) { set < int > cnt; int min_idx = 0; for(int i = 1; i < n; i++) { if(a[i] < a[min_idx]) min_idx = i; if(cnt.count(a[i])) return 0; cnt.insert(a[i]); } vector < int > order; for(int i = min_idx; i < n; i++) { order.push_back(a[i]); } for(int i = 0; i < min_idx; i++) { order.push_back(a[i]); } for(int i = 1; i < n; i++) { if(order[i] <= n && order[i] - order[0] != i) return 0; } return 1; } int countReplacement(int n, int a[]) { return -3; } int replacement(int n, int a[], int ans[]) { int min_idx = 0; int maxel = 0; for(int i = 0; i < n; i++) { if(a[i] < a[min_idx]) min_idx = i; maxel = max(maxel, a[i]); } vector < int > order; for(int i = min_idx; i < n; i++) { order.push_back(a[i]); } for(int i = 0; i < min_idx; i++) { order.push_back(a[i]); } vector < pair < int, int > > broken; for(int i = 0; i < n; i++) { if(order[i] > n) broken.push_back({order[i], i}); } sort(broken.begin(), broken.end()); if(order.front() > n) order.front() = 1; for(int i = 1; i < n; i++) { if(order[i - 1] == n) { order[i] = 1; } else { order[i] = order[i - 1] + 1; } } int last = n; int pos = 0; for(pair < int, int > p : broken) { int val = p.first; int idx = p.second; while(last < val) { ans[pos++] = order[idx]; order[idx] = ++last; } } return maxel - n; }
#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...