CSES - KILO 2018 5/5 - Results
Submission details
Task:Train
Sender:JiK
Submission time:2018-10-04 17:39:37 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.02 sdetails
#2ACCEPTED0.02 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.02 sdetails
#6ACCEPTED0.18 sdetails
#7ACCEPTED0.02 sdetails
#8ACCEPTED0.11 sdetails
#9ACCEPTED0.06 sdetails
#10ACCEPTED0.10 sdetails
#11ACCEPTED0.06 sdetails
#12ACCEPTED0.11 sdetails
#13ACCEPTED0.04 sdetails
#14ACCEPTED0.24 sdetails
#15ACCEPTED0.16 sdetails
#16ACCEPTED0.08 sdetails
#17ACCEPTED0.02 sdetails
#18ACCEPTED0.07 sdetails
#19ACCEPTED0.15 sdetails
#20ACCEPTED0.61 sdetails
#21ACCEPTED0.62 sdetails
#22ACCEPTED0.61 sdetails
#23ACCEPTED0.59 sdetails
#24ACCEPTED0.60 sdetails
#25ACCEPTED0.60 sdetails
#26ACCEPTED0.59 sdetails
#27ACCEPTED0.60 sdetails
#28ACCEPTED0.61 sdetails
#29ACCEPTED0.62 sdetails
#30ACCEPTED0.61 sdetails
#31ACCEPTED0.61 sdetails
#32ACCEPTED0.61 sdetails

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