Codeforces 350C - Bombs
2016-11-02 12:10
337 查看
将炸弹按照离原点点的曼哈顿距离排序之后顺序处理即可。
#include<bits/stdc++.h> using namespace std; const int maxn = 112345; vector<pair<int,pair<char,int> > > ans; pair<int,pair<char,int> > npair(int st,char c = 'E',int tim = 0){ return make_pair(st,make_pair(c,tim)); } void solve(int x,int y){ if(x != 0){ char c = x > 0 ? 'R' : 'L'; ans.push_back(npair(1,c,abs(x))); } if(y != 0){ char c = y > 0 ? 'U' : 'D'; ans.push_back(npair(1,c,abs(y))); } ans.push_back(npair(2)); if(y != 0){ char c = y < 0 ? 'U' : 'D'; ans.push_back(npair(1,c,abs(y))); } if(x != 0){ char c = x < 0 ? 'R' : 'L'; ans.push_back(npair(1,c,abs(x))); } ans.push_back(npair(3)); } pair<int,int> brr[maxn]; int main(){ int n; scanf("%d",&n); for(int i = 0;i<n;i++){ scanf("%d %d",&brr[i].first,&brr[i].second); } sort(brr,brr+n,[](pair<int,int> a,pair<int,int> b){ if(abs(a.first) != abs(b.first)) return abs(a.first) < abs(b.first); else return abs(a.second) < abs(b.second);}); for(int i = 0;i < n;i++){ solve(brr[i].first,brr[i].second); } printf("%d\n",ans.size()); for(auto x : ans){ if(x.first != 1){ printf("%d\n",x.first); } else{ printf("%d %d %c\n",x.first,x.second.second,x.second.first); } } return 0; }
相关文章推荐
- 【codeforces 350C】Bombs
- Codeforces-350C
- [Codeforces] 277A - Learning Languages
- Codeforces 496D Tennis Game(高效)
- codeforces 689 E. Mike and Geometry Problem 组合数学 优先队列
- codeforces 735D
- CodeForces - 456A(水)
- codeforces 651A python
- codeforces 165B(Burning Midnight Oil)
- codeforces 389A Fox and Number Game
- codeforces 690D2 D2. The Wall (medium)(组合数学)
- codeforces 742B Arpa's obvious problem(水)
- 暑假第一周 C . CodeForces 660A Co-prime Array
- codeForces 165B.Burning Midnight Oil(二分)
- CodeForces - 191A Dynasty Puzzles
- codeforces - Tricky Sum(模拟)
- CodeForces 254C 字典序
- 【Codeforces Beta Round #48】 Codeforces 51F Caterpillar
- C - Hacker, pack your bags! Codeforces(贪心)
- codeforces-886-E. Maximum Element(Технокубок 2018 - Отборочный Раунд 3)