cf C. Bombs

http://codeforces.com/contest/350/problem/C

对n个点按曼哈顿距离排序。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 100010
 5 using namespace std;
 6 
 7 struct node
 8 {
 9     int x,y;
10     int dir;
11     bool operator <(const node &a)const
12     {
13        return (abs(x)+abs(y))<(abs(a.x)+abs(a.y));
14     }
15 }p[maxn];
16 
17 int n;
18 
19 int main()
20 {
21     while(scanf("%d",&n)!=EOF)
22     {
23         int cnt=0;
24         for(int i=0; i<n; i++)
25         {
26             scanf("%d%d",&p[i].x,&p[i].y);
27             if(p[i].x!=0&&p[i].y!=0) cnt+=6;
28             else cnt+=4;
29         }
30         sort(p,p+n);
31         printf("%d\n",cnt);
32         for(int i=0; i<n; i++)
33         {
34             if(p[i].x>0)
35             {
36                 printf("1 %d R\n",abs(p[i].x));
37                 if(p[i].y>0)
38                 {
39                     printf("1 %d U\n",abs(p[i].y));
40                 }
41                 else if(p[i].y<0)
42                 {
43                     printf("1 %d D\n",abs(p[i].y));
44                 }
45                 printf("2\n");
46                 printf("1 %d L\n",abs(p[i].x));
47                 if(p[i].y>0)
48                 {
49                     printf("1 %d D\n",abs(p[i].y));
50                 }
51                 else if(p[i].y<0)
52                 {
53                     printf("1 %d U\n",abs(p[i].y));
54                 }
55                 printf("3\n");
56             }
57             else if(p[i].x<0)
58             {
59                 printf("1 %d L\n",abs(p[i].x));
60                 if(p[i].y>0)
61                 {
62                     printf("1 %d U\n",abs(p[i].y));
63                 }
64                 else if(p[i].y<0)
65                 {
66                     printf("1 %d D\n",abs(p[i].y));
67                 }
68                 printf("2\n");
69                 printf("1 %d R\n",abs(p[i].x));
70                 if(p[i].y>0)
71                 {
72                     printf("1 %d D\n",abs(p[i].y));
73                 }
74                 else if(p[i].y<0)
75                 {
76                     printf("1 %d U\n",abs(p[i].y));
77                 }
78                 printf("3\n");
79             }
80             else if(p[i].x==0)
81             {
82                 if(p[i].y>0) printf("1 %d U\n",abs(p[i].y));
83                 else if(p[i].y<0) printf("1 %d D\n",abs(p[i].y));
84                 printf("2\n");
85                 if(p[i].y>0) printf("1 %d D\n",abs(p[i].y));
86                 else if(p[i].y<0) printf("1 %d U\n",abs(p[i].y));
87                 printf("3\n");
88             }
89         }
90     }
91     return 0;
92 }
View Code

 

转载于:https://www.cnblogs.com/fanminghui/p/3928153.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值