Submission #703066

#TimeUsernameProblemLanguageResultExecution timeMemory
703066LucaLucaMSails (IOI07_sails)C++17
40 / 100
1072 ms7284 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; 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); long long ans = 0; for (int i=1; i<=n; i++) { for (int j=a[i-1].x+1; j<=a[i].x; j++) st.insert({0, j}); vector<pair<int, int>>temp; for (int step=0; step<a[i].y; step++) { int aux2 = (*st.begin()).second; f[aux2]++; int aux1 = (*st.begin()).first; aux1++; st.erase(*st.begin()); temp.push_back({aux1, aux2}); } for (int step=0; step<a[i].y; step++) { st.insert({temp[step].first, temp[step].second}); } } for (int i=1; i<=NMAX; i++) ans += (long long) f[i] * (f[i] - 1) / 2; 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...