#include <iostream>
#include <algorithm>
#include <deque>
using namespace std;
struct player {
long long value;
long long resistence;
long long position;
};
struct ch {
long long minute;
long long enter;
long long exit;
};
player v[500010];
ch Change[1000001];
deque<int> Start;
long long change, start, n, m, rest, lin, col, i, j, sol, last;
long long cmp(const player &a, const player &b) {
if (a.value != b.value)
return a.value > b.value;
else
return a.resistence > b.resistence;
}
long long cmp1(const ch &a, const ch &b) {
return a.minute < b.minute;
}
int main () {
cin>>m>>n;
for (i=1;i<=n;i++) {
cin>>v[i].value>>v[i].resistence;
v[i].position = i;
}
sort(v+1, v+n+1, cmp);
/**
for (i=1;i<=n;i++) {
cout<<v[i].value<<" "<<v[i].resistence<<" "<<v[i].position<<"\n";
}
**/
for (i=1;i<=6;i++) {
if (v[i].resistence < m) {
break;
}
Start.push_back(v[i].position);
sol += v[i].value * m;
}
rest = 6*m - (i-1)*m;
last = -1;
col = 1;
for (j=i;j<=n;j++) {
if (v[j].resistence == m) {
if (rest >= v[j].resistence) {
sol += m*v[j].value;
rest -= m;
Start.push_front(v[j].position);
if (rest == 0)
break;
}
}
if (col == 1) {
Start.push_back(v[j].position);
}
if (col != 1) {
Change[++change].minute = col;
Change[change].enter = v[j].position;
Change[change].exit = last;
}
last = v[j].position;
if (rest <= v[j].resistence) {
sol += rest * v[j].value;
break;
}else {
if (col + v[j].resistence <= m) {
col += v[j].resistence;
} else
if (col + v[j].resistence == m+1) {
last =-1;
col = 1;
} else {
Start[++start] = v[j].position;
col = v[j].resistence - (m-col);
}
rest -= v[j].resistence;
sol += v[j].resistence * v[j].value;
}
}
sort(Change+1, Change+change+1, cmp1);
cout<<sol<<"\n";
for (i=1;i<=6;i++) {
cout<<Start.front()<<" ";
Start.pop_front();
}
cout<<"\n";
cout<<change<<"\n";
for (i=1;i<=change;i++)
cout<<Change[i].minute-1<<" "<<Change[i].exit<<" "<<Change[i].enter<<"\n";
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
2 ms |
376 KB |
Output isn't correct |
2 |
Correct |
8 ms |
504 KB |
Output is correct |
3 |
Correct |
29 ms |
888 KB |
Output is correct |
4 |
Incorrect |
2 ms |
376 KB |
Output isn't correct |
5 |
Correct |
11 ms |
632 KB |
Output is correct |
6 |
Incorrect |
5 ms |
504 KB |
Output isn't correct |
7 |
Incorrect |
10 ms |
508 KB |
Output isn't correct |
8 |
Incorrect |
92 ms |
2884 KB |
Output isn't correct |
9 |
Incorrect |
536 ms |
12304 KB |
Output isn't correct |
10 |
Incorrect |
516 ms |
12408 KB |
Output isn't correct |