Submission #86933

#TimeUsernameProblemLanguageResultExecution timeMemory
86933antimirageGondola (IOI14_gondola)C++17
55 / 100
26 ms4464 KiB
#include "gondola.h" #include <bits/stdc++.h> #define fr first #define sc second #define pb push_back #define mk make_pair #define all(s) s.begin(), s.end() using namespace std; const int N = 3e5 + 5; int u[N], sz, mx, pos, ind[N], ar[N], n; deque <pair <int, int> > vec; int valid(int N, int x[]) { n = N; for (int i = 0; i < n; i++) { if (u[x[i]] > 0) return 0; u[x[i]] = i + 1; } for (int i = 1; i < n; i++) { if ( u[i] != 0 && u[i + 1] != 0 && ((u[i] - 1) + 1) % n != u[i + 1] - 1) return 0; } if ( u[n] != 0 && u[1] != 0 && ((u[n] - 1) + 1) % n != u[1] - 1) return 0; return 1; } int replacement(int n, int a[], int ans[]) { for (int i = 0; i < n; i++) mx = max(a[i], mx); for (int i = 0; i < n; i++) { if(a[i] > n) vec.pb( mk(a[i], i) ); else pos = (i - (a[i] - 1) + n) % n; } sort( all(vec) ); ind[pos] = ++sz; for (int i = (pos + 1) % n; i != pos; i = (i + 1) % n) ind[i] = ++sz; sz = 0; for (int i = n + 1; i <= mx; i++) { ans[sz++] = ind[ vec[0].second ]; ind[ vec[0].second ] = i; if ( vec[0].first == i ) vec.pop_front(); } return sz; } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; } /** 4 3 3 1 4 **/
#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...