제출 #1174159

#제출 시각아이디문제언어결과실행 시간메모리
1174159nguyenkhangninh99사육제 (CEOI14_carnival)C++17
100 / 100
5 ms444 KiB
#include <bits/stdc++.h> using namespace std; /* struct Seg { int l, r, id; bool operator<(const Seg &s) const { return r > s.r; } }; int n; vector<int> a, d; vector<vector<Seg>> fiseg; bool ok(int x) { vector<int> b = a; priority_queue<Seg> pq; for (int i = 1; i <= n; ++i) { for (auto &seg : segment[i]) pq.push(seg); int cur = 0; while (!pq.empty() && cur < x) { if (pq.empty()) break; Seg seg = pq.top(); if (seg.r < i) return false; int transfer = min(x - cur, b[seg.id]); cur += transfer; b[seg.id] -= transfer; if (!b[seg.id]) pq.pop(); } } return pq.empty(); } */ signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); /* cin >> n; a.assign(n + 1, 0); d.assign(n + 1, 0); fiseg.resize(n + 1); for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) cin >> d[i]; for (int i = 1; i <= n; ++i) { int l = max(1LL, i - d[i]); int r = min(n, i + d[i]); if (a[i]) segment[l].push_back({l, r, i}); } int l = 0, r = 1e18, res = -1; while (l <= r) { int mid = (l + r) / 2; if(ok(mid)){ res = mid; r = mid - 1; } else l = mid + 1; } cout << res; */ int n; cin >> n; vector<vector<int>> a; a.push_back({1}); for(int i = 2; i <= n; i++){ int l = 0, r = int(a.size()) - 1, res = -1; while(l <= r){ int mid = (l + r) / 2; cout << mid + 2 << " " << i << " "; for(int j = 0; j <= mid; j++) cout << a[j][0] << " "; cout << endl; int x; cin >> x; if(x == mid + 2) l = mid + 1; else{ res = mid; r = mid - 1; } } if(res == -1) a.push_back({i}); else a[res].push_back(i); } vector<int> res(n + 1); int id = 1; for(auto v: a){ for(int j: v) res[j] = id; id++; } cout << "0 "; for(int i = 1; i <= n; i++) cout << res[i] << " "; }
#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...