Task: | Tenkici |
Sender: | henrikaalto |
Submission time: | 2019-07-27 20:41:55 +0300 |
Language: | C++ (C++17) |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 100 |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.01 s | details |
#2 | ACCEPTED | 0.01 s | details |
#3 | ACCEPTED | 0.01 s | details |
#4 | ACCEPTED | 0.01 s | details |
#5 | ACCEPTED | 0.01 s | details |
#6 | ACCEPTED | 0.01 s | details |
#7 | ACCEPTED | 0.01 s | details |
#8 | ACCEPTED | 0.01 s | details |
#9 | ACCEPTED | 0.01 s | details |
#10 | ACCEPTED | 0.01 s | details |
#11 | ACCEPTED | 0.01 s | details |
#12 | ACCEPTED | 0.01 s | details |
#13 | ACCEPTED | 0.02 s | details |
#14 | ACCEPTED | 0.01 s | details |
Code
#include <bits/stdc++.h> using namespace std; struct pos { int x, y; }; #define all(x) x.begin(), x.end() #define F first #define S second #define N 501 pos orig[N], fin[N]; pair<int,int> ycoords[N]; pair<int,int> xcoords[N]; int vapaa[N][N]; vector<pair<char, int>> moves; int n; int main() { cin >> n; for (int i = 1; i <= n; ++i) { fill(vapaa[i], vapaa[i] + N, 1); } for (int i = 1; i <= n; ++i) { cin >> orig[i].y >> orig[i].x; ycoords[i] = {orig[i].y, i}; xcoords[i] = {orig[i].x, i}; vapaa[orig[i].y][orig[i].x] = 0; } sort(ycoords + 1, ycoords + 1 + n); for (int i = 1; i <= n; ++i) { fin[ycoords[i].S].y = i; } for (int it = 1; it <= n; ++it) { for (int i = 1; i <= n; ++i) { while (orig[i].y < fin[i].y && vapaa[orig[i].y + 1][orig[i].x]) { moves.emplace_back('D', i); vapaa[orig[i].y][orig[i].x] = 1; orig[i].y++; vapaa[orig[i].y][orig[i].x] = 0; } while (orig[i].y > fin[i].y && vapaa[orig[i].y - 1][orig[i].x]) { moves.emplace_back('U', i); vapaa[orig[i].y][orig[i].x] = 1; orig[i].y--; vapaa[orig[i].y][orig[i].x] = 0; } } } sort(xcoords + 1, xcoords + 1 + n); for (int i = 1; i <= n; ++i) { fin[xcoords[i].S].x = i; } for (int i = 1; i <= n; ++i) { while (orig[i].x < fin[i].x) { moves.emplace_back('R', i); orig[i].x++; } while (orig[i].x > fin[i].x) { moves.emplace_back('L', i); orig[i].x--; } } cout << moves.size() << "\n"; for (auto [x, y] : moves) { cout << y << " " << x << "\n"; } }
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 1 U 2 R 3 R |
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 1 U 1 U 2 U 3 U ... |
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 2 U 3 U 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 1 U 1 U 2 U 4 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 3 D 4 U 6 D 7 U ... |
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 2 D 4 D 4 D 6 U ... |
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 D 2 D 3 U 3 U ... 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 2 U 2 U 4 U 4 U ... 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 2 D 2 D 2 D 2 D ... 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 2 U 2 U 2 U 2 U ... 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 1 U 1 U 1 U 1 U ... 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 1 D 1 D 1 D 1 D ... 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 1 U 2 D 2 D 2 D ... 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 1 U 1 U 1 U 1 U ... Truncated |