CSES - COCI 2006/2007 #3 - Results
Submission details
Task:Tenkici
Sender:untokarila
Submission time:2019-07-28 20:42:22 +0300
Language:C++11
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#60.01 sdetails
#70.03 sdetails
#80.01 sdetails
#90.01 sdetails
#100.01 sdetails
#11ACCEPTED0.01 sdetails
#120.01 sdetails
#130.02 sdetails
#140.01 sdetails

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], occ[501][501];
pair<int, int> x[501], y[501], tank[501];

vector<pair<int, char> > ans;

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};
        occ[a][b] = i;
        tank[i] = {a, b};
    }

    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;
    }

    for(int i=1; i<=n; i++){
        int m = fix[x[i].S]<x[i].F ? -1 : 1;
        char c  = fix[x[i].S]<x[i].F ? 'L' : 'R';
        int ty = tank[x[i].S].F;

        while(fix[x[i].S] != x[i].F){

            int j = 0;
            while(occ[ty][x[i].F+j+m]) j += m;

            while(j){
                int a = occ[ty][x[i].F+j];
                ans.push_back({a, c});
                x[a].F += m;
                swap(occ[ty][x[i].F+j], occ[ty][x[i].F+j+m]);
                j -= m;
            }
            ans.push_back({x[i].S, c});
            x[i].F += m;
            swap(occ[ty][x[i].F], occ[ty][x[i].F-m]);
        }
    }

    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
3 R
1 R
4 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:

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

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

user output
30
5 R
7 R
2 R
5 R
...

Test 7

Verdict:

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

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

user output
(empty)

Test 8

Verdict:

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

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

user output
41
4 R
6 R
6 R
9 R
...

Test 9

Verdict:

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

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

user output
572
15 L
15 L
15 L
34 L
...

Test 10

Verdict:

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

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

user output
2092
40 L
40 L
94 L
8 L
...

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
...

Test 12

Verdict:

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

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

user output
30226
107 L
107 L
107 L
107 L
...

Test 13

Verdict:

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

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

user output
63604
99 L
99 L
99 L
99 L
...

Test 14

Verdict:

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

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

user output
10400
195 L
73 L
73 L
125 L
...