제출 #387868

#제출 시각아이디문제언어결과실행 시간메모리
387868MilosMilutinovic곤돌라 (IOI14_gondola)C++14
30 / 100
42 ms5148 KiB
/** * author: milos * created: 09.04.2021 10:49:32 **/ #include <bits/stdc++.h> #include "gondola.h" using namespace std; int valid(int n, int* a) { set<int> s(a, a + n); if ((int) s.size() != n) { return 0; } vector<bool> was(n + 1, false); vector<int> g; for (int i = 0; i < n; i++) { if (a[i] > n) { g.push_back(a[i]); continue; } was[a[i]] = true; } sort(g.begin(), g.end()); for (int i = 0; i < (int) g.size(); i++) { if (g[i] != n + i + 1) { return 0; } } vector<int> b; for (int i = 0; i < n; i++) { if (a[i] <= n) { b.push_back(a[i]); } } int cnt = 0; for (int i = 1; i < (int) b.size(); i++) { if (b[i] < b[i - 1]) { ++cnt; } } return (cnt <= 1 ? 1 : 0); } int replacement(int n, int* a, int* ans) { int mn = 0; for (int i = 1; i < n; i++) { if (a[i] < a[mn]) { mn = i; } } if (a[mn] > n) { assert(false); iota(ans, ans + n, 1); return n; } vector<int> pos; vector<bool> taken(n, false); for (int i = 1; i < a[mn]; i++) { int j = mn - i; if (j < 0) { j += n; } pos.push_back(j); taken[j] = true; } for (int i = 1; i < n; i++) { int j = (mn + i) % n; if (taken[j] || a[j] < n) { continue; } pos.push_back(j); } vector<bool> was(n + 1, false); for (int i = 0; i < n; i++) { if (a[i] <= n) { was[a[i]] = true; } } vector<int> val; for (int i = 1; i <= n; i++) { if (!was[i]) { val.push_back(i); } } vector<int> id((int) val.size()); iota(id.begin(), id.end(), 0); sort(id.begin(), id.end(), [&](int i, int j) { return pos[i] < pos[j]; }); int cnt = 0, mxv = 0; for (int i = 0; i < (int) val.size(); i++) { ans[id[i]] = val[i]; mxv = max(mxv, val[i]); cnt++; } int mx = 0; for (int i = 0; i < n; i++) { if (a[mx] < a[i]) { mx = i; } } for (int i = n + cnt + 1; i <= a[mx]; i++) { ans[cnt++] = i; } return cnt; } int countReplacement(int n, int* a) { return 1; }
#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...