Submission #1249198

#TimeUsernameProblemLanguageResultExecution timeMemory
12491981ncogn1toSails (IOI07_sails)C++20
0 / 100
1095 ms4032 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector<pair<int,int>> mast(N); int maxH = 0; for(int i = 0; i < N; i++){ cin >> mast[i].first >> mast[i].second; maxH = max(maxH, mast[i].first); } // sortujemy maszty rosnąco po wysokości H sort(mast.begin(), mast.end()); // S[L] = aktualna liczba żagli na poziomie L vector<ll> S(maxH+1, 0); // min‑heap par (S[L], L) // używamy greater<>, bo chcemy najmniejsze S[L] na szczycie priority_queue< pair<ll,int>, vector<pair<ll,int>>, greater<pair<ll,int>> > pq; // inicjalizujemy kolejkę poziomami 1..maxH ze stanem 0 for(int L = 1; L <= maxH; L++){ pq.emplace(0LL, L); } // przetwarzamy każdy maszt for(auto &p : mast){ int H = p.first; int K = p.second; vector<int> chosen; chosen.reserve(K); // wybieramy K razy poziom o najmniejszym obciążeniu while((int)chosen.size() < K){ auto [s, L] = pq.top(); pq.pop(); // pomijamy nieaktualne wpisy: // 1) poziom wykracza poza zasięg H // 2) zapisane s != S[L] if(L > H || s != S[L]) continue; // akceptujemy poziom L chosen.push_back(L); // zwiększamy obciążenie w tablicy S[L]++; } // wstawiamy zaktualizowane stany z powrotem do kolejki for(int L : chosen){ pq.emplace(S[L], L); } } // po wszystkim liczymy total inefficiency = Σ S[L]*(S[L]-1)/2 ll result = 0; for(int L = 1; L <= maxH; L++){ result += S[L] * (S[L] - 1) / 2; } cout << result << "\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...
#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...