Submission #1163971

#TimeUsernameProblemLanguageResultExecution timeMemory
1163971an22inkleGondola (IOI14_gondola)C++20
55 / 100
32 ms4680 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int v[]) { map<int, bool> freq; int mi = -1; for (int i = 0; i < n; i++) { if (freq[v[i]]) return 0; freq[v[i]] = 1; if (v[i] <= n && (mi == -1 || v[i] < v[mi])) { mi = i; } } if (mi == -1) { return 1; } int prevj = mi; for (int j = mi + 1; j <= (n + mi - 1); j++) { int i = j % n; if (v[i] > n) continue; // cout << prevj << ' ' << j << '\n'; // cout << v[prevj % n] << ' ' << (v[i]) << '\n'; // cout << abs(j - prevj) << ' ' << abs(v[i] - v[prevj % n]) << '\n'; // cout << '\n'; if (v[i] < v[prevj % n] or abs(j - prevj) != abs(v[i] - v[prevj % n])) return 0; prevj = j; } return 1; } //---------------------- int replacement(int n, int v[], int ans[]) { int LASTI = -1; function<void(int)> pb = [&](int a) { LASTI++; ans[LASTI] = a; }; int mi = -1; for (int i = 0; i < n; i++) { if (v[i] <= n && (mi == -1 || v[i] < v[mi])) { mi = i; } } vector<int> original(n); if (mi == -1) { iota(original.begin(), original.end(), 1); } else { int set = v[mi]; for (int i = 1; set - i > 0; i++) { int j = (mi - i); if (j < 0) j = n + j; original[j] = set - i; } for (int i = 1; set + i <= n; i++) { int j = (mi + i) % n; original[j] = set + i; } } original[mi] = v[mi]; vector<pair<int, int>> ord; for (int i = 0; i < n; i++) { if (v[i] > n) ord.push_back({v[i], original[i]}); } sort(ord.begin(), ord.end()); int count = 0; int last = n + 1; for (int i = 0; i < ord.size(); i++) { // cout << last << ' ' << ord[i].first << '\n'; int run = 0; while (last != ord[i].first + 1) { if (run == 0) { pb(ord[i].second); } else { pb(last - 1); } count++, last++, run++; } } return count; } //---------------------- 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...