Submission #1177558

#TimeUsernameProblemLanguageResultExecution timeMemory
1177558PAndaSSails (IOI07_sails)C++20
15 / 100
1096 ms7048 KiB
#include<iostream> #include<set> #include<vector> #include<map> using namespace std; class cmp { public: bool operator()(pair<int,int> a, pair<int,int> b) const{ return ((a.first != b.first)?(a.first < b.first):(a.second > b.second)); } }; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; int max_h = 0; vector<int> hs(n), ks(n); for(int i = 0; i < n; i++){ cin >> hs[i] >> ks[i]; max_h = max(max_h, hs[i]); } set<pair<int, int>, cmp> ord; for(int i = 0; i < max_h; i++){ ord.insert(pair<int, int>(0, i)); } int ans = 0; map<int, bool> occ; for(int i = n - 1; i >= 0; i--){ occ.clear(); while(ks[i]){ for(auto p = ord.begin(); p != ord.end() && ks[i]; p++){ if((*p).second < hs[i] && !occ[(*p).second]){ ks[i]--; ans += (*p).first; occ[(*p).second] = true; ord.insert(pair<int, int>((*p).first + 1, ((*p).second))); ord.erase(p); break; } } } } 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...