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

 

你可能感兴趣的:(bom)