QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#708615#8064. Gas Stationjerry2423WA 1ms3804kbC++143.1kb2024-11-04 00:52:212024-11-04 00:52:22

Judging History

This is the latest submission verdict.

  • [2024-11-04 00:52:22]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3804kb
  • [2024-11-04 00:52:21]
  • Submitted

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'