제출 #1264864

#제출 시각아이디문제언어결과실행 시간메모리
1264864ortsacGondola (IOI14_gondola)C++17
25 / 100
24 ms4936 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]) { deque<int> v(n); for (int i = 0; i < n; i++) v[i] = inputSeq[i]; set<int> s; for (auto u : v) s.insert(u); if (((int) s.size()) < n) return 0; int x = *min_element(v.begin(), v.end()); if (x > n) return 1; while (v.front() != x) { v.push_front(v.back()); v.pop_back(); } int curr = x; for (int i = 1; i < n; i++) { if (v[i] > n) continue; if (v[i] != (x + i)) return 0; } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { deque<int> v(n); for (int i = 0; i < n; i++) v[i] = gondolaSeq[i]; int po = (min_element(v.begin(), v.end()) - v.begin()); int x = v[po]; if (x <= n) { int qtd = (x - po - 1)%n; qtd = ((qtd + n)%n); while (qtd--) { v.push_front(v.back()); v.pop_back(); } } // ok, so now 1 is at position 0, 2 at 1, etc set<int> waiting; vector<int> p(250001, -1); for (int i = 0; i < n; i++) p[v[i]] = i; for (int i = 0; i < n; i++) if (v[i] > n) waiting.insert(i); vector<int> curr(n); for (int i = 0; i < n; i++) curr[i] = (i + 1); vector<int> rep; int mx = *max_element(v.begin(), v.end()); for (int i = (n + 1); i <= mx; i++) { if (p[i] == -1) { rep.push_back(curr[*waiting.begin()]); curr[*waiting.begin()] = i; continue; } rep.push_back(curr[p[i]]); curr[p[i]] = i; waiting.erase(i); } for (int i = 0; i < ((int) rep.size()); i++) { replacementSeq[i] = rep[i]; } return rep.size(); } //---------------------- 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...