Task: | Train |
Sender: | JiK |
Submission time: | 2018-10-04 17:39:37 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.02 s | details |
#2 | ACCEPTED | 0.02 s | details |
#3 | ACCEPTED | 0.01 s | details |
#4 | ACCEPTED | 0.01 s | details |
#5 | ACCEPTED | 0.02 s | details |
#6 | ACCEPTED | 0.18 s | details |
#7 | ACCEPTED | 0.02 s | details |
#8 | ACCEPTED | 0.11 s | details |
#9 | ACCEPTED | 0.06 s | details |
#10 | ACCEPTED | 0.10 s | details |
#11 | ACCEPTED | 0.06 s | details |
#12 | ACCEPTED | 0.11 s | details |
#13 | ACCEPTED | 0.04 s | details |
#14 | ACCEPTED | 0.24 s | details |
#15 | ACCEPTED | 0.16 s | details |
#16 | ACCEPTED | 0.08 s | details |
#17 | ACCEPTED | 0.02 s | details |
#18 | ACCEPTED | 0.07 s | details |
#19 | ACCEPTED | 0.15 s | details |
#20 | ACCEPTED | 0.61 s | details |
#21 | ACCEPTED | 0.62 s | details |
#22 | ACCEPTED | 0.61 s | details |
#23 | ACCEPTED | 0.59 s | details |
#24 | ACCEPTED | 0.60 s | details |
#25 | ACCEPTED | 0.60 s | details |
#26 | ACCEPTED | 0.59 s | details |
#27 | ACCEPTED | 0.60 s | details |
#28 | ACCEPTED | 0.61 s | details |
#29 | ACCEPTED | 0.62 s | details |
#30 | ACCEPTED | 0.61 s | details |
#31 | ACCEPTED | 0.61 s | details |
#32 | ACCEPTED | 0.61 s | details |
Code
#include <bits/stdc++.h> using namespace std; typedef bitset<20> bs; typedef int64_t ll; typedef pair<ll,ll> PLL; typedef pair<int, pair<int,int>> PQ; // [a][b][t] start a end b start at time t int vals[100][100][501]; int main() { cout << std::setprecision(15); int n, t, x; cin >> n >> t >> x; x--; vector<int> v (n); vector<int> k (n); for (int i=0; i<n; i++) { cin >> v[i] >> k[i]; k[i]; } // [a][b][t] been to a, now at b, time now t for (int a=0; a<n; a++) { vals[a][a][t] = v[a]; } for (int tt=t; tt>=0; tt--) { for (int a=0; a<n; a++) { for (int b=0; b<n; b++) { //Been to a, now at b, time now tt; int samedir = (b>a) ? 1 : -1; if (vals[a][b][tt] == 0) { continue; } for (int dir : {-1, 1}) { int val = vals[a][b][tt]; int tnew = tt; int cstart = b+dir; int oldext = a; if (dir!=samedir) { cstart = a+dir; tnew -= abs(a-b); oldext = b; } for (int c = cstart; c>=0 && c<n; c+=dir ) { tnew --; if (tnew < abs(c-x)) { break; } if (tnew >= k[c] ) { val += v[c]; } // cout << "From " << a << " " << b << " " << tt << " to " << c << " val " << vals[a][b][tt] << " to " << val << endl; vals[oldext][c][tnew] = max(vals[oldext][c][tnew], val); } } } } } for (int tt=t; tt>=0; tt--) { for (int a=0; a<n; a++) { for (int b=0; b<n; b++) { // cout << a << " " << b << " " << tt << " : " << vals[a][b][tt] << endl; } } } int res = 0; for (int a=0; a<n; a++) { for (int b=0; b<n; b++) { for (int tt=abs(b-x); tt<=t; tt++) { res = max(res, vals[a][b][tt]); } } } cout << res << endl; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
6 7 6 93307 1 7833 4 37108 2 72439 3 ... |
correct output |
---|
215202 |
user output |
---|
215202 |
Test 2
Verdict: ACCEPTED
input |
---|
8 10 7 51918 7 35437 9 68657 1 49595 9 ... |
correct output |
---|
192354 |
user output |
---|
192354 |
Test 3
Verdict: ACCEPTED
input |
---|
8 8 2 92910 6 3624 7 41387 6 13722 7 ... |
correct output |
---|
193798 |
user output |
---|
193798 |
Test 4
Verdict: ACCEPTED
input |
---|
8 11 8 19368 2 19451 8 10699 11 4468 11 ... |
correct output |
---|
211200 |
user output |
---|
211200 |
Test 5
Verdict: ACCEPTED
input |
---|
7 8 5 32888 1 58060 8 57781 3 34426 2 ... |
correct output |
---|
212964 |
user output |
---|
212964 |
Test 6
Verdict: ACCEPTED
input |
---|
75 367 58 27688 333 12009 146 4336 362 5432 64 ... |
correct output |
---|
2967420 |
user output |
---|
2967420 |
Test 7
Verdict: ACCEPTED
input |
---|
27 205 5 98829 9 12721 176 3734 42 5253 198 ... |
correct output |
---|
1151820 |
user output |
---|
1151820 |
Test 8
Verdict: ACCEPTED
input |
---|
64 284 31 95177 240 55740 70 88859 4 9717 232 ... |
correct output |
---|
2686993 |
user output |
---|
2686993 |
Test 9
Verdict: ACCEPTED
input |
---|
44 430 3 26054 289 6824 291 77874 258 19054 16 ... |
correct output |
---|
1813840 |
user output |
---|
1813840 |
Test 10
Verdict: ACCEPTED
input |
---|
72 203 59 88438 81 90707 134 71428 24 12222 112 ... |
correct output |
---|
2799752 |
user output |
---|
2799752 |
Test 11
Verdict: ACCEPTED
input |
---|
58 164 7 41863 38 80229 83 60902 50 40686 95 ... |
correct output |
---|
2568211 |
user output |
---|
2568211 |
Test 12
Verdict: ACCEPTED
input |
---|
63 345 28 82820 207 95317 81 83194 67 97205 234 ... |
correct output |
---|
3034885 |
user output |
---|
3034885 |
Test 13
Verdict: ACCEPTED
input |
---|
35 284 11 58913 126 81316 240 19447 168 66530 247 ... |
correct output |
---|
1726040 |
user output |
---|
1726040 |
Test 14
Verdict: ACCEPTED
input |
---|
79 447 54 69575 232 70628 378 41004 14 50567 426 ... |
correct output |
---|
3565056 |
user output |
---|
3565056 |
Test 15
Verdict: ACCEPTED
input |
---|
71 357 8 12710 172 84866 265 83282 147 40951 96 ... |
correct output |
---|
3188763 |
user output |
---|
3188763 |
Test 16
Verdict: ACCEPTED
input |
---|
54 372 35 15246 12 73301 5 69091 22 33037 285 ... |
correct output |
---|
2715736 |
user output |
---|
2715736 |
Test 17
Verdict: ACCEPTED
input |
---|
22 67 21 51967 22 13573 57 13761 57 20922 33 ... |
correct output |
---|
965162 |
user output |
---|
965162 |
Test 18
Verdict: ACCEPTED
input |
---|
59 162 10 47921 35 4851 53 18032 70 13691 69 ... |
correct output |
---|
2741128 |
user output |
---|
2741128 |
Test 19
Verdict: ACCEPTED
input |
---|
72 313 30 87239 126 8436 206 24393 189 24425 68 ... |
correct output |
---|
3122537 |
user output |
---|
3122537 |
Test 20
Verdict: ACCEPTED
input |
---|
100 500 31 19432 440 46328 307 6378 430 45401 461 ... |
correct output |
---|
4320875 |
user output |
---|
4320875 |
Test 21
Verdict: ACCEPTED
input |
---|
100 500 29 87022 451 70505 361 53419 264 55237 85 ... |
correct output |
---|
4634248 |
user output |
---|
4634248 |
Test 22
Verdict: ACCEPTED
input |
---|
100 500 53 62833 129 85514 85 80873 74 11724 215 ... |
correct output |
---|
4646444 |
user output |
---|
4646444 |
Test 23
Verdict: ACCEPTED
input |
---|
100 500 85 91388 87 80409 461 19618 93 86911 41 ... |
correct output |
---|
4521786 |
user output |
---|
4521786 |
Test 24
Verdict: ACCEPTED
input |
---|
100 500 9 64272 240 55709 232 49664 345 39253 67 ... |
correct output |
---|
4456964 |
user output |
---|
4456964 |
Test 25
Verdict: ACCEPTED
input |
---|
100 500 22 51261 165 19156 129 17190 14 98847 13 ... |
correct output |
---|
4681226 |
user output |
---|
4681226 |
Test 26
Verdict: ACCEPTED
input |
---|
100 500 11 10965 459 36736 428 75590 195 50516 209 ... |
correct output |
---|
4250246 |
user output |
---|
4250246 |
Test 27
Verdict: ACCEPTED
input |
---|
100 500 94 45563 266 12173 203 85025 11 43224 268 ... |
correct output |
---|
4730226 |
user output |
---|
4730226 |
Test 28
Verdict: ACCEPTED
input |
---|
100 500 51 20857 138 19563 286 82461 423 22697 228 ... |
correct output |
---|
5189441 |
user output |
---|
5189441 |
Test 29
Verdict: ACCEPTED
input |
---|
100 500 49 13530 253 92765 492 15449 464 22169 420 ... |
correct output |
---|
4398759 |
user output |
---|
4398759 |
Test 30
Verdict: ACCEPTED
input |
---|
100 500 77 85310 387 14647 289 33668 219 40285 202 ... |
correct output |
---|
4673308 |
user output |
---|
4673308 |
Test 31
Verdict: ACCEPTED
input |
---|
100 500 26 5050 138 32431 382 81210 22 32263 128 ... |
correct output |
---|
4525117 |
user output |
---|
4525117 |
Test 32
Verdict: ACCEPTED
input |
---|
100 500 80 23109 338 54126 434 88851 27 15864 341 ... |
correct output |
---|
4261159 |
user output |
---|
4261159 |