Submission #1261710

#TimeUsernameProblemLanguageResultExecution timeMemory
1261710niepamietamhaslaArranging Tickets (JOI17_arranging_tickets)C++20
0 / 100
2 ms4928 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define pii pair<ll,ll> const ll MAXN = 2e5 + 5; ll n, m; ll V[MAXN]; ll V2[MAXN]; struct d{ ll a; ll b; ll c; }; vector<d> ludzie[MAXN]; struct comp{ bool operator()(const d &p1, const d &p2){ if(p1.b != p2.b) return p1.b < p2.b; return false; } }; bool czy(ll F, ll k, ll koniec){ //cout << F << " " << k << " " << koniec << " BS\n"; ll pom = 0; priority_queue<d, vector<d>, comp> pq; for(ll i = 1; i <= n; ++i){ V2[i] = 0; } for(ll i = 1; i <= koniec; ++i){ for(auto u : ludzie[i]){ if(u.b >= koniec){ pq.push(u); } } ll ile = max(0ll, (V[i] - pom - k + F + 1) / 2); while(ile > 0){ if(pq.empty()) return false; auto e = pq.top(); pq.pop(); ll plus; if(ile >= e.c){ plus = e.c; ile -= e.c; } else{ plus = ile; ile = 0; pq.push({e.a, e.b, e.c - plus}); } F -= plus; pom += plus; V2[e.a] -= 2 * plus; V2[e.b+1] += 2 * plus; V2[0] += plus; } } for(ll i = 1; i <= n; ++i){ V2[i] += V2[i-1]; if(V2[i] > k) return false; } return true; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; ll a, b, c; for(ll i = 0; i < m; ++i){ cin >> a >> b >> c; if(a > b) swap(a, b); b--; ludzie[a].push_back((d){a, b, c}); V[a] += c; V[b+1]-= c; } ll mx = 0; ll ind = -1; for(ll i = 1; i <= n; ++i){ V[i] += V[i - 1]; // cout << V[i] << " "; if(V[i] >= mx){ mx = V[i]; ind = i; } } ll p = 1; ll k = mx; while(p != k){ ll sr = (p + k) / 2; if(czy(mx - sr, sr, ind) or czy(mx - sr + 1, sr, ind)){ k = sr; } else{ p = sr + 1; } } cout << p << "\n"; return 0; }
#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...