# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
99384 | Ort | Hokej (COCI17_hokej) | C++11 | 245 ms | 18520 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |