Submission #1261772

#TimeUsernameProblemLanguageResultExecution timeMemory
1261772inkvizytorArranging Tickets (JOI17_arranging_tickets)C++20
85 / 100
143 ms16468 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long bool czy(ll x, ll k, vector<vector<pair<ll, ll>>> &w, vector<ll> &sum, ll mx, ll poz, ll n, ll m) { vector<ll> wzor (n+1, 0); for (ll i = 1; i <= n; i++) { wzor[i] = sum[i]-x+(k-sum[i]+x+1)/2; } priority_queue<pair<ll, ll>> pq; int s = 0; vector<ll> z (n+2, 0); for (int i = 1; i <= poz; i++) { for (auto q : w[i]) { pq.push(q); } for (int j = -s; j < wzor[i]; j++) { if (pq.empty()) { return 0; } z[pq.top().first+1]+=2; pq.pop(); s--; } } for (int i = poz+1; i <= n; i++) { s += z[i]; if (s+sum[i] > x) { return 0; } } return 1; } int main() { ios::sync_with_stdio(0); cin.tie(0); ll n, m; cin >> n >> m; vector<pair<pair<ll, ll>, ll>> k (m); vector<ll> sum (n+2); for (ll i = 0; i < m; i++) { cin >> k[i].first.first >> k[i].first.second >> k[i].second; if (k[i].first.first > k[i].first.second) { swap(k[i].first.first, k[i].first.second); } k[i].first.second--; sum[k[i].first.first]++; sum[k[i].first.second+1]--; } ll mx = 0, poz = 0; for (ll i = 1; i <= n; i++) { sum[i] += sum[i-1]; if (sum[i] > mx) { mx = sum[i]; poz = i; } } vector<vector<pair<ll, ll>>> w (n+1); for (int i = 0; i < m; i++) { if (k[i].first.second >= poz && k[i].first.first <= poz) { w[k[i].first.first].push_back({k[i].first.second, i}); } } ll b = 0, e = mx; while (b < e) { ll s = (b + e) / 2; if (czy(s, mx - s, w, sum, mx, poz, n, m) || czy(s, mx - s + 1, w, sum, mx, poz, n, m)) e = s; else b = s + 1; } cout << b << '\n'; }
#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...