CSES - Siperia opettaa 5.0 - Results
Submission details
Task:Distribution Center
Sender:JesseNiininen
Submission time:2017-03-09 16:12:42 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#10.05 sdetails
#20.04 sdetails
#30.04 sdetails
#40.02 sdetails
#50.04 sdetails
#60.04 sdetails
#70.18 sdetails
#80.19 sdetails
#90.21 sdetails
#100.17 sdetails
#110.19 sdetails
#120.19 sdetails
#130.20 sdetails
#140.20 sdetails
#150.04 sdetails
#160.33 sdetails
#170.30 sdetails
#180.30 sdetails
#190.33 sdetails
#200.31 sdetails
#210.29 sdetails
#220.28 sdetails
#230.30 sdetails
#240.28 sdetails
#250.29 sdetails
#260.13 sdetails
#270.12 sdetails
#280.17 sdetails
#290.13 sdetails
#300.14 sdetails
#310.32 sdetails
#320.33 sdetails
#330.35 sdetails
#340.34 sdetails
#350.32 sdetails
#36--details
#370.03 sdetails
#380.04 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:104:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j = 0; j < scores[i].size(); j++){
                                           ^

Code

#include <bits/stdc++.h>
using namespace std;

int n, m;

vector<vector<pair<int, int>>> scores;
vector<vector<int>> robots;

pair<int, int> traverseDown(int, int);
pair<int, int> traverseUp(int, int);

pair<int, int> traverseDown(int x, int y){
    if(y >= n - 1)
        return {n-1, n-1};
    auto it = lower_bound(robots.at(y).begin(), robots.at(y).end(), x);
    if(it == robots.at(y).end()){
        return {y + 1, y + 1};
    }
    int xi = it - robots.at(y).begin();
    auto p = scores.at(y).at(xi);
    if(p.first != -1){
        return p;
    }
    x = *it;
    auto newScore = make_pair(y, y);
    auto score2 = traverseDown(x, y + 1);
    auto score3 = traverseUp(x, y - 1);
    newScore.first = min(newScore.first, min(score2.first, score3.first));
    newScore.second = max(newScore.second, max(score2.second, score3.second));

    scores[y][xi] = newScore;

    return newScore;
}

pair<int, int> traverseUp(int x, int y){
    if(y <= 0)
        return {0, 0};
    auto it = lower_bound(robots.at(y).begin(), robots.at(y).end(), x);
    if(it == robots.at(y).end())
        return {y - 1, y - 1};

    int xi = it - robots.at(y).begin();
    auto p = scores.at(y).at(xi);
    if(!p.first != -1){
        return p;
    }
    x = *it;

    pair<int, int>  newScore = {y, y};
    pair<int, int> score2 = traverseDown(x, y + 1);
    pair<int, int>  score3 = traverseUp(x, y - 1);
    newScore.first = min(newScore.first, min(score2.first, score3.first));
    newScore.second = max(newScore.second, max(score2.second, score3.second));

    scores[y][xi] = newScore;

    return newScore;
}



void traverse(int x, int y){
    auto up = traverseUp(x, y);
    auto down = traverseDown(x, y);
    up.first = min(up.first, down.first);
    up.second = max(up.second, down.second);

    scores[y][0] = up;
}

void solve(){
    for(int i = 0; i < n; i++){
        traverse(robots[i][0], i);
    }
}

int h(pair<int, int> p){
    return abs(p.first - p.second);
}

int main()
{
    cin >> n >> m;
    robots.resize(n);
    scores.resize(n);
    for(int i = 0; i < m; i++){
        int x, y;
        cin >> x >> y;
        x--; y--;
        robots[y].push_back(-x);
        robots[y + 1].push_back(-x);
        scores[y].push_back({-1, -1});
        scores[y + 1].push_back({-1, -1});
    }

    for(int i = 0; i < n; i++){
        sort(robots[i].begin(), robots[i].end());
    }

    solve();

    for(int i = 0; i < n; i++){
        for(int j = 0; j < scores[i].size(); j++){
            cout << h(scores[i][j]) << " ";
        }
        cout << "\n";
    }




}

Test details

Test 1

Verdict:

input
4 3
1000 1
2000 2
3000 3

correct output
2 3 4 4

user output

4 3 
4 4 

Test 2

Verdict:

input
4 3
1 1
3 2
2 3

correct output
2 4 4 2

user output

4 3 
4 0 

Test 3

Verdict:

input
10 9
100 1
200 2
300 3
400 4
...

correct output
2 3 4 5 6 7 8 9 10 10

user output

5 3 
6 5 
7 6 
8 7 
...

Test 4

Verdict:

input
10 9
100 9
200 8
300 7
400 6
...

correct output
10 10 9 8 7 6 5 4 3 2

user output
10 
10 0 
10 0 
10 0 
10 0 
...

Test 5

Verdict:

input
10 9
100 1
200 9
300 2
400 8
...

correct output
2 3 4 5 10 10 5 4 3 2

user output

5 3 
6 5 
7 6 
10 7 
...

Test 6

Verdict:

input
10 9
100 5
200 4
300 6
400 3
...

correct output
6 6 5 4 3 3 4 5 6 6

user output

8 0 
8 0 
8 0 
8 0 
...

Test 7

Verdict:

input
10 9
100 5
200 5
300 5
400 5
...

correct output
1 1 1 1 2 2 1 1 1 1

user output
(empty)

Test 8

Verdict:

input
10 9
100 3
200 7
300 3
400 7
...

correct output
1 1 2 2 1 1 2 2 1 1

user output
(empty)

Test 9

Verdict:

input
10 1
1 1

correct output
2 2 1 1 1 1 1 1 1 1

user output
(empty)

Test 10

Verdict:

input
10 1
99999 1

correct output
2 2 1 1 1 1 1 1 1 1

user output
(empty)

Test 11

Verdict:

input
10 1
99999 9

correct output
1 1 1 1 1 1 1 1 2 2

user output
(empty)

Test 12

Verdict:

input
10 1
99999 1

correct output
2 2 1 1 1 1 1 1 1 1

user output
(empty)

Test 13

Verdict:

input
100000 1
1 1

correct output
2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Test 14

Verdict:

input
100000 1
1 99999

correct output
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Test 15

Verdict:

input
3 3
1 1
2 2
3 1

correct output
3 3 3

user output
2 0 
2 0 0 

Test 16

Verdict:

input
100000 99999
51613 84082
3120 88303
90089 57457
82323 36322
...

correct output
2 3 3 1 2 2 1 2 2 1 2 3 3 2 2 ...

user output
(empty)

Test 17

Verdict:

input
100000 99999
55166 92759
72522 49885
91041 58065
66993 66182
...

correct output
1 1 2 4 4 4 4 5 5 5 2 1 3 3 3 ...

user output
(empty)

Test 18

Verdict:

input
100000 99999
90524 19551
22558 32618
68813 64252
16920 55138
...

correct output
2 3 3 3 3 2 2 2 3 3 3 5 5 5 1 ...

user output
(empty)

Test 19

Verdict:

input
100000 99999
543 67313
25302 10820
96818 55943
93056 11560
...

correct output
1 1 2 2 2 2 3 3 3 1 3 3 4 4 2 ...

user output
(empty)

Test 20

Verdict:

input
100000 99999
7098 91097
88439 4005
35386 17063
1917 86090
...

correct output
1 3 3 5 5 3 6 6 6 3 4 4 1 3 3 ...

user output
(empty)

Test 21

Verdict:

input
100000 99999
61671 26653
41901 6290
45318 73847
46486 71566
...

correct output
2 2 2 2 2 4 4 2 2 4 4 4 4 5 5 ...

user output
(empty)

Test 22

Verdict:

input
100000 99999
46666 39205
52562 49064
91772 40120
98068 12889
...

correct output
2 2 4 4 3 3 3 2 3 3 2 2 6 6 5 ...

user output
(empty)

Test 23

Verdict:

input
100000 99999
53478 77769
62382 16090
33315 61136
81654 27389
...

correct output
1 1 1 1 4 4 3 4 4 3 3 3 3 4 4 ...

user output
(empty)

Test 24

Verdict:

input
100000 99999
47015 74422
77958 41967
26483 37045
52560 21334
...

correct output
2 2 3 3 3 1 1 1 2 2 2 4 4 4 4 ...

user output
(empty)

Test 25

Verdict:

input
100000 99999
30444 72197
95332 46416
50857 42241
79810 99621
...

correct output
1 1 2 2 2 4 4 4 4 6 6 2 3 3 3 ...

user output
(empty)

Test 26

Verdict:

input
100 99999
15682 14
57251 20
83099 50
57485 33
...

correct output
100 100 100 100 100 100 100 10...

user output
100 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

Test 27

Verdict:

input
100 99999
77171 16
89815 40
18710 40
25372 60
...

correct output
100 100 100 100 100 100 100 10...

user output
100 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

Test 28

Verdict:

input
100 99999
69498 75
45431 25
35804 53
35830 44
...

correct output
100 100 100 100 100 100 100 10...

user output
100 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

Test 29

Verdict:

input
100 99999
14287 85
73750 52
14953 80
27802 96
...

correct output
100 100 100 100 100 100 100 10...

user output
100 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

Test 30

Verdict:

input
100 99999
60021 48
2240 89
45435 4
18160 44
...

correct output
100 100 100 100 100 100 100 10...

user output
100 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

Test 31

Verdict:

input
200000 99999
6459 28754
89524 100200
40972 165007
35542 79232
...

correct output
2 3 3 2 2 1 1 2 2 1 1 2 2 2 2 ...

user output
(empty)

Test 32

Verdict:

input
200000 99999
91854 42500
34291 59129
21533 24543
12870 128293
...

correct output
1 2 2 2 2 2 2 1 1 2 2 2 2 2 2 ...

user output
(empty)

Test 33

Verdict:

input
200000 99999
88029 49150
1821 18264
32450 150397
87753 44993
...

correct output
3 3 2 1 1 1 1 1 2 2 1 1 2 3 3 ...

user output
(empty)

Test 34

Verdict:

input
200000 99999
18637 75106
91405 193095
10716 115503
78702 119750
...

correct output
1 2 2 1 1 1 1 2 2 1 3 3 2 1 1 ...

user output
(empty)

Test 35

Verdict:

input
200000 99999
18742 152060
38942 104683
46001 85720
9675 93087
...

correct output
1 1 1 2 3 3 1 1 1 1 1 2 4 4 2 ...

user output
(empty)

Test 36

Verdict:

input
100000 99999
1 99999
2 99998
3 99997
4 99996
...

correct output
100000 100000 99999 99998 9999...

user output
(empty)

Test 37

Verdict:

input
4 3
1000 1
2000 2
3000 3

correct output
2 3 4 4

user output

4 3 
4 4 

Test 38

Verdict:

input
4 3
1 1
3 2
2 3

correct output
2 4 4 2

user output

4 3 
4 0