Submission #1228730

#TimeUsernameProblemLanguageResultExecution timeMemory
1228730AMel0nGondola (IOI14_gondola)C++20
55 / 100
12 ms3924 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define FOR(i,N) for(ll i = 0; i < N; i++) #define all(x) (x).begin(), (x).end() #define F first #define S second #include "gondola.h" int valid(int n, int seq[]) { unordered_set<int> seen; pair<int,int> pr = {-1,-1}; FOR(i, n) { if (seen.find(seq[i]) != seen.end()) return 0; seen.insert(seq[i]); if (seq[i] <= n) { if (pr.F != -1) { if (pr.F <= seq[i]) { if (seq[i]-pr.F != i-pr.S) return 0; } else { if (pr.F-seq[i] != n-(i-pr.S)) return 0; } } pr = {seq[i], i}; } } return 1; } int replacement(int n, int gSeq[], int replacementSeq[]) { int mi = min_element(gSeq, gSeq+n) - gSeq; int mn = *min_element(gSeq, gSeq+n); if (mn > n) {mn = 1; mi = 0;} mi = (mi + n-mn+1) % n; // index of gondola 1 priority_queue<pair<ll,ll>> pq; FOR(i, n) if (gSeq[i] > n) pq.push({-gSeq[i], (i >= mi ? i-mi+1 : n-(mi-i)+1)}); // current, original gondola int repi = 0; // repSeq idx int pr = n; // previous cur while(pq.size()) { auto [cur, og] = pq.top(); cur = -cur; pq.pop(); replacementSeq[repi++] = og; for(int rep = pr+1; rep < cur; rep++) replacementSeq[repi++] = rep; pr = cur; } return repi; } 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...