CSES - COCI 2006/2007 #3 - Results
Submission details
Task:Tenkici
Sender:untokarila
Submission time:2019-07-28 21:58:54 +0300
Language:C++ (C++11)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.01 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.01 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.01 sdetails
#14ACCEPTED0.01 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:50:9: warning: unused variable 's' [-Wunused-variable]
     int s = 0;
         ^

Code

#include <iostream>
#include <vector>
#include <algorithm>
#define pb push_back
#define F first
#define S second

using namespace std;

int n, fix[501], fiy[501], board[501][501], tank[501];
pair<int, int> x[501], y[501];
vector<pair<int, char> > ans;

void pushx(int i){
    i = fix[i];
    int m = fix[x[i].S]<x[i].F ? -1 : 1;
    char c = fix[x[i].S]<x[i].F ? 'L' : 'R';

    while(fix[x[i].S] != x[i].F){
        if(board[tank[x[i].S]][x[i].F+m]) pushx(board[tank[x[i].S]][x[i].F+m]);
        ans.push_back({x[i].S, c});
        swap(board[tank[x[i].S]][x[i].F], board[tank[x[i].S]][x[i].F+m]);
        x[i].F += m;
    }


}

int main(){

    cin >> n;

    for(int i=1; i<=n; i++){
        int a, b;
        cin >> a >> b;
        x[i] = {b, i};
        y[i] = {a, i};
        board[a][b] = i;
        tank[i] = a;
    }

    sort(x+1, x+n+1);
    sort(y+1, y+n+1);

    for(int i=1; i<=n; i++){
        fix[x[i].S] = i;
        fiy[y[i].S] = i;
    }

    int s = 0;
    for(int i=1; i<=n; i++){
        pushx(x[i].S);
    }

    for(int i=1; i<=n; i++){
        int m = fiy[y[i].S]<y[i].F ? -1 : 1;
        char c  = fiy[y[i].S]<y[i].F ? 'U' : 'D';
        while(fiy[y[i].S] != y[i].F){
            ans.push_back({y[i].S, c});
            y[i].F += m;
        }
    }

    cout << ans.size() << '\n';
    for(auto i : ans) cout << i.F << ' ' << i.S << '\n';

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
3
2 1
3 1
2 2

correct output
3
1 U
2 R
3 R

user output
3
2 R
3 R
1 U

Test 2

Verdict: ACCEPTED

input
4
3 2
3 1
4 1
4 2

correct output
8
2 U
2 U
3 U
1 U
...

user output
8
4 R
4 R
3 R
1 R
...

Test 3

Verdict: ACCEPTED

input
5
5 4
4 2
4 4
2 2
...

correct output
6
5 U
5 U
4 U
2 U
...

user output
6
4 R
3 R
4 U
2 U
...

Test 4

Verdict: ACCEPTED

input
6
5 1
5 6
1 4
6 6
...

correct output
7
1 U
1 U
6 U
3 D
...

user output
7
6 R
2 L
5 D
1 U
...

Test 5

Verdict: ACCEPTED

input
7
5 3
4 4
5 5
3 5
...

correct output
8
6 D
5 U
3 D
7 U
...

user output
8
6 L
1 L
4 R
7 R
...

Test 6

Verdict: ACCEPTED

input
8
8 7
2 2
8 8
2 1
...

correct output
16
4 D
2 D
2 D
5 D
...

user output
16
5 R
5 R
7 R
2 R
...

Test 7

Verdict: ACCEPTED

input
9
1 2
2 2
8 8
9 8
...

correct output
24
8 D
8 D
2 D
2 D
...

user output
24
2 R
2 R
8 R
1 R
...
Truncated

Test 8

Verdict: ACCEPTED

input
10
4 2
5 3
7 1
3 2
...

correct output
36
4 U
4 U
1 U
1 U
...

user output
36
4 R
6 R
6 R
9 R
...
Truncated

Test 9

Verdict: ACCEPTED

input
50
1 47
12 29
35 12
6 47
...

correct output
544
34 D
34 D
34 D
34 D
...

user output
544
15 L
15 L
15 L
34 L
...
Truncated

Test 10

Verdict: ACCEPTED

input
100
53 50
31 76
46 54
94 37
...

correct output
1913
40 U
40 U
40 U
40 U
...

user output
1913
40 L
40 L
94 L
8 L
...
Truncated

Test 11

Verdict: ACCEPTED

input
250
196 74
148 245
203 19
113 198
...

correct output
2370
185 D
185 D
185 D
185 D
...

user output
2370
207 L
207 L
13 L
13 L
...
Truncated

Test 12

Verdict: ACCEPTED

input
350
185 170
222 294
183 181
159 171
...

correct output
25660
235 U
235 U
235 U
235 U
...

user output
25660
107 L
107 L
107 L
107 L
...
Truncated

Test 13

Verdict: ACCEPTED

input
465
160 163
177 231
220 111
430 330
...

correct output
48963
400 U
400 U
400 U
400 U
...

user output
48963
99 L
99 L
99 L
99 L
...
Truncated

Test 14

Verdict: ACCEPTED

input
500
428 393
30 377
76 52
21 218
...

correct output
10301
195 D
195 D
195 D
195 D
...

user output
10301
195 L
73 L
73 L
125 L
...
Truncated