Submission #879682

#TimeUsernameProblemLanguageResultExecution timeMemory
879682OAleksaSails (IOI07_sails)C++14
0 / 100
1063 ms37716 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define f first #define s second const int maxn = 1e6 + 69; int n, a[maxn], b[maxn]; pair<int, int> st[4 * maxn]; void combine(int v) { auto l1 = st[v * 2]; auto r1 = st[v * 2 + 1]; if (l1.f < r1.f) st[v] = st[v * 2]; else st[v] = st[v * 2 + 1]; } void build(int v, int l, int r) { if (l == r) { st[v] = {0, l}; } else { int mid = (l + r) / 2; build(v * 2, l, mid); build(v * 2 + 1, mid + 1, r); combine(v); } } void upd(int v, int tl, int tr, int p) { if (tl == tr) { st[v].f++; } else { int mid = (tl + tr) / 2; if (p <= mid) upd(v * 2, tl, mid, p); else upd(v * 2 + 1, mid + 1, tr, p); combine(v); } } pair<int, int> qry(int v, int tl, int tr, int l, int r) { if (tl > r || tr < l) return {1e9, -1}; else if (tl >= l && tr <= r) return st[v]; else { int mid = (tl + tr) / 2; auto l1 = qry(v * 2, tl, mid, l, r); auto r1 = qry(v * 2 + 1, mid + 1, tr, l, r); if (l1.f < r1.f) return l1; else return r1; } } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { cin >> n; for (int i = 1;i <= n;i++) cin >> a[i] >> b[i]; build(1, 1, 1e6); int ans = 0; for (int i = 1;i <= n;i++) { while (b[i] > 0) { auto r = qry(1, 1, 1e6, 1, a[i]); ans += r.f; upd(1, 1, 1e6, r.s); b[i]--; } } cout << ans; } 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...
#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...