QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#708615 | #8064. Gas Station | jerry2423 | WA | 1ms | 3804kb | C++14 | 3.1kb | 2024-11-04 00:52:21 | 2024-11-04 00:52:22 |
Judging History
answer
#include <iostream>
#include <string>
#include <numeric>
#include <set>
#include <queue>
#include <cmath>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <stack>
#include <cstdint>
#include <map>
#include <list>
using namespace std;
int main()
{
int n, p;
cin >> p >> n;
std::vector<list<pair<int, char>>> l(p);
std::vector<list<pair<int, char>>> r(p);
for (int i = 0; i < n; i++)
{
int t, f;
char s;
cin >> t >> f >> s;
for (int i = 0; i < p; i++)
{
for (auto it = l[i].begin(); it != l[i].end();)
{
if (it->first <= t)
it = l[i].erase(it);
else
++it;
}
for (auto it = r[i].begin(); it != r[i].end();)
{
if (it->first <= t)
it = r[i].erase(it);
else
++it;
}
}
if (s == 'L')
{
bool added = false;
for (int i = 0; i < p; i++)
{
if (l[i].size() < 2)
{
if (l[i].empty()) {
l[i].emplace_back(t+f, 'A');
} else {
if (l[i].back().second == 'A') {
l[i].emplace_back(t+f, 'B');
} else {
l[i].emplace_back(l[i].back().first+f, 'A');
}
}
cout << l[i].back().first << endl;
added = true;
break;
}
}
if (!added)
{
int min_idx = 0;
for (int i = 1; i < p; i++)
{
if (l[i].size() < l[min_idx].size())
min_idx = i;
}
// cout << l[min_idx].back() + f << endl;
// l[min_idx].push_back(l[min_idx].back() + f);
auto p = std::prev(l[min_idx].end());
auto pp = std::prev(p);
if (p->second == 'A') {
l[min_idx].emplace_back(pp->first+f, 'B');
} else {
if (pp->second == 'B') {
l[min_idx].emplace_back(p->first+f, 'B');
} else {
if (p->first >= pp->first) {
l[min_idx].emplace_back(p->first+f, 'A');
} else {
l[min_idx].emplace_back(p->first+f, 'B');
}
}
}
cout << (l[min_idx].back()).first << endl;
}
}
else
{
bool added = false;
for (int i = 0; i < p; i++)
{
if (r[i].size() < 2)
{
if (r[i].empty()) {
r[i].emplace_back(t+f, 'A');
} else {
if (r[i].back().second == 'A') {
r[i].emplace_back(t+f, 'B');
} else {
r[i].emplace_back(r[i].back().first+f, 'A');
}
}
cout << r[i].back().first << endl;
added = true;
break;
}
}
if (!added)
{
int min_idx = 0;
for (int i = 1; i < p; i++)
{
if (r[i].size() < r[min_idx].size())
min_idx = i;
}
// cout << l[min_idx].back() + f << endl;
// l[min_idx].push_back(l[min_idx].back() + f);
auto p = std::prev(r[min_idx].end());
auto pp = std::prev(p);
if (p->second == 'A') {
r[min_idx].emplace_back(pp->first+f, 'B');
} else {
if (pp->second == 'B') {
r[min_idx].emplace_back(p->first+f, 'B');
} else {
if (p->first >= pp->first) {
r[min_idx].emplace_back(p->first+f, 'A');
} else {
r[min_idx].emplace_back(p->first+f, 'B');
}
}
}
cout << (r[min_idx].back()).first << endl;
}
}
}
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3576kb
input:
1 4 1 9 L 2 5 L 3 10 L 4 10 L
output:
10 7 17 27
result:
ok 4 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
1 4 1 9 L 2 9 L 3 10 L 4 10 L
output:
10 11 21 21
result:
ok 4 lines
Test #3:
score: 0
Accepted
time: 0ms
memory: 3588kb
input:
1 2 8 11 R 9 10 L
output:
19 19
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 0ms
memory: 3600kb
input:
2 10 1 10 R 2 3 R 3 10 R 4 12 R 5 1 R 6 5 R 7 10 R 10 2 R 11 7 R 13 4 R
output:
11 5 13 16 6 11 21 18 18 22
result:
ok 10 lines
Test #5:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
4 8 3 9 R 5 6 R 6 2 L 8 2 L 9 6 R 10 10 R 12 3 R 14 3 L
output:
12 11 8 10 15 20 15 17
result:
ok 8 lines
Test #6:
score: 0
Accepted
time: 0ms
memory: 3804kb
input:
2 10 1 1 L 2 7 L 3 6 L 4 10 L 5 7 L 6 1 L 7 6 L 8 1 L 9 4 L 10 1 L
output:
2 9 9 14 12 10 18 10 14 11
result:
ok 10 lines
Test #7:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
2 9 1 10 R 2 9 R 3 10 R 4 6 R 5 5 R 6 8 R 7 1 L 8 5 L 9 1 R
output:
11 11 13 10 16 18 8 13 12
result:
ok 9 lines
Test #8:
score: 0
Accepted
time: 0ms
memory: 3508kb
input:
1 9 2 2 R 6 6 R 10 4 L 12 2 R 13 5 L 17 5 R 21 3 L 23 9 R 27 9 R
output:
4 12 14 14 18 22 24 32 36
result:
ok 9 lines
Test #9:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
1 10 2 6 R 3 5 L 5 5 R 8 10 L 10 1 L 12 3 L 15 4 R 16 4 L 18 9 L 20 1 L
output:
8 8 10 18 11 15 19 20 29 21
result:
ok 10 lines
Test #10:
score: 0
Accepted
time: 0ms
memory: 3728kb
input:
2 9 1 9 R 2 1 R 3 7 R 4 5 R 5 5 R 6 7 R 7 1 R 8 1 R 9 7 R
output:
10 3 10 9 10 17 11 11 17
result:
ok 9 lines
Test #11:
score: -100
Wrong Answer
time: 1ms
memory: 3460kb
input:
2 237 8 96 R 22 85 R 36 15 R 48 47 R 56 50 R 69 30 R 79 59 R 89 53 R 97 3 R 101 76 R 105 25 R 117 38 R 119 73 R 136 83 L 151 24 R 152 67 R 157 87 R 159 20 R 168 63 L 183 32 R 198 26 R 202 24 R 206 6 R 209 99 R 222 42 L 223 31 R 240 18 R 253 92 R 254 77 R 267 38 R 269 81 R 284 31 R 288 59 R 293 89 R ...
output:
104 107 51 95 145 137 154 160 157 230 185 198 271 219 254 265 317 337 231 297 323 347 323 446 273 354 372 538 449 576 530 607 666 619 678 774 387 673 708 789 365 713 769 781 865 865 876 899 940 963 997 1053 1057 1152 1140 1246 1186 596 1303 1308 1247 1302 1397 1315 1495 1326 1376 1519 1423 1494 1558...
result:
wrong answer 5th lines differ - expected: '157', found: '145'