Submission #99384

#TimeUsernameProblemLanguageResultExecution timeMemory
99384OrtHokej (COCI17_hokej)C++11
120 / 120
245 ms18520 KiB
#include<iostream> #include<algorithm> #include<vector> #define MAX 500010 #define ll long long using namespace std; bool cmp(const pair<pair<int,int>,int> &a, const pair<pair<int,int>,int> &b) { if(a.first.first==b.first.first) return a.second < b.second; else return a.first.first>b.first.first; } int m, n, strength, endurance, id, t, _time, time_passed, block, sub, last; ll total; vector<pair<pair<int,int>, int> > players; vector<int> starters; vector<pair<int,int> > sol[MAX]; int main() { cin.sync_with_stdio(0); cin.tie(0); cin.exceptions(cin.failbit); cin >> m >> n; _time = m; for(int i=1;i<=n;i++) { cin >> strength >> endurance; players.push_back({{strength,endurance},i}); } sort(players.begin(),players.end(),cmp); while(t<n && block<6) { strength = players[t].first.first; endurance = players[t].first.second; id = players[t].second; if(endurance==0) { t++; continue; } _time = min(endurance, m-time_passed); if(time_passed==0 && starters.size()<6) { starters.push_back(id); } else if(block!=5 && endurance==m) { block++; starters.push_back(id); total += (ll)m*strength; t++; continue; } else { sub++; sol[time_passed].push_back({last,id}); } time_passed += _time; total += (ll)_time*strength; players[t].first.second -= _time; last = id; if(time_passed==m) { block++; time_passed = 0; } } cout << total << "\n"; for(int i=0;i<6;i++) cout << starters[i] << " "; cout << "\n" << sub << "\n"; for(int i=0;i<m;i++) { for(int j=sol[i].size()-1;j>=0;j--) { cout << i << " " << sol[i][j].first << " " << sol[i][j].second; cout << "\n"; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...