Submission #703163

#TimeUsernameProblemLanguageResultExecution timeMemory
703163LucaLucaMSails (IOI07_sails)C++17
100 / 100
48 ms5436 KiB
#include <bits/stdc++.h> using namespace std; /** luam fiecare sail in ordine crescatoare dupa inaltime: luam cele mai putin frecvente k inaltimi adunam la raspuns **/ const int NMAX = 1e5; struct sail { int x, y; bool operator < (const sail aux) const { if (x == aux.x) return y > aux.y; return x < aux.x; } }; sail a[NMAX + 5]; int f[NMAX + 5]; multiset<pair<int, int>>st; /** tinem diferenta intre doua consecutive **/ int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; for (int i=1; i<=n; i++) cin >> a[i].x >> a[i].y; sort(a+1, a+n+1); multiset<int>st; st.insert(0); for (int i=1; i<=n; i++) { st.insert(a[i].x); auto p = st.upper_bound(a[i].x-a[i].y); auto q = prev(p); int nxt = *p + *q - a[i].x + a[i].y; if (q != st.begin()) st.erase(q); st.insert(nxt); st.erase(p); } long long ans = 0, cnt = 0; for (auto it = st.end(); it-- != st.begin(); cnt++) // in ordine inversa ans += cnt * *it; 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...