UVa 10763: Foreign Exchange

来源:互联网 发布:淘宝产品卖点怎么写 编辑:程序博客网 时间:2024/05/18 01:29

这题效率低的解法还是很容易做出的,只要注意判断输入的一种特殊情况即可,详见代码,我的解题代码如下:

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <string>#include <algorithm>using namespace std;struct Pair{int x, y;}data[500005];int cmp(const void* i, const void* j){Pair *a = (Pair *)i;Pair *b = (Pair *)j;if((*a).x == (*b).x) return (*a).y - (*b).y;else return (*a).x - (*b).x;}int main(){int N,tmp;while(cin >> N && N!=0){int ok=1;int c=0;if(N%2==1) ok=0;for(int i=0; i<N; i++){scanf("%d %d",&data[i].x,&data[i].y);if(data[i].x>data[i].y) { tmp=data[i].x; data[i].x=data[i].y; data[i].y=tmp; c++;}}if(c*2!=N) ok=0;//排除类似输入 2 1 2 1 2的情况if(!ok) { printf("NO\n"); continue; }qsort(data,N,sizeof(Pair),cmp);for(int i=0; i<N; i+=2)if(!(data[i].x==data[i+1].x && data[i].y==data[i+1].y)) { ok=0; break; }if(!ok) printf("NO\n");else printf("YES\n");}return 0;}