-
Notifications
You must be signed in to change notification settings - Fork 0
/
203_div2c.cpp
127 lines (124 loc) · 2.35 KB
/
203_div2c.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <bits/stdc++.h>
using namespace std;
bool func(const pair<long long int,long long int>p1,const pair<long long int,long long int>p2)
{
return (abs(p1.first)+abs(p1.second))<(abs(p2.first)+abs(p2.second)) ;
}
int main()
{
long long int n ;
cin >> n ;
pair<long long int,long long int> p[n] ;
for(long long int i=0;i<n;i++)
{
cin >> p[i].first >> p[i].second ;
}
sort(p,p+n,func);
/*for(long long int i=0;i<n;i++)
{
cout << p[i].first << " " << p[i].second << "\n" ;
}*/
long long int posx=0,posy=0,count1=0 ;
bool flag1=0,flag2=0,flag3=0,flag4=0 ;
for(long long int i=0;i<n;i++)
{
flag1=0;
flag2=0 ;
flag3=0 ;
flag4=0 ;
if(posx>p[i].first)
{
//cout << "1 " << posx-p[i].first << " L\n" ;
flag1 = 1 ;
count1++ ;
}
else if(posx<p[i].first)
{
//cout << "1 " << p[i].first-posx << " R\n" ;
flag2=1 ;
count1++ ;
}
if(posy>p[i].second)
{
//cout << "1 " << posy-p[i].second << " D\n" ;
flag3 = 1 ;
count1++ ;
}
else if(posy<p[i].second)
{
//cout << "1 " << p[i].second-posy << " U\n" ;
flag4 = 1 ;
count1++ ;
}
//cout << 2 << "\n" ;
if(flag1==1)
{
//cout << "1 " << abs(p[i].first-posx) << " R\n" ;
count1++ ;
}
else if(flag2==1)
{
//cout << "1 " << abs(posx-p[i].first) << " L\n" ;
count1++ ;
}
if(flag3==1)
{
//cout << "1 " << abs(p[i].second-posy) << " U\n" ;
count1++ ;
}
else if(flag4==1)
{
//cout << "1 " << abs(posy-p[i].second) << " D\n" ;
count1++ ;
}
//cout << 3 << "\n" ;
count1+=2 ;
}
cout << count1 << "\n" ;
for(long long int i=0;i<n;i++)
{
flag1=0;
flag2=0 ;
flag3=0 ;
flag4=0 ;
if(posx>p[i].first)
{
cout << "1 " << posx-p[i].first << " L\n" ;
flag1 = 1 ;
}
else if(posx<p[i].first)
{
cout << "1 " << p[i].first-posx << " R\n" ;
flag2=1 ;
}
if(posy>p[i].second)
{
cout << "1 " << posy-p[i].second << " D\n" ;
flag3 = 1 ;
}
else if(posy<p[i].second)
{
cout << "1 " << p[i].second-posy << " U\n" ;
flag4 = 1 ;
}
cout << 2 << "\n" ;
if(flag1==1)
{
cout << "1 " << abs(p[i].first-posx) << " R\n" ;
}
else if(flag2==1)
{
cout << "1 " << abs(posx-p[i].first) << " L\n" ;
}
if(flag3==1)
{
cout << "1 " << abs(p[i].second-posy) << " U\n" ;
}
else if(flag4==1)
{
cout << "1 " << abs(posy-p[i].second) << " D\n" ;
}
cout << 3 << "\n" ;
}
return 0 ;
}