codeforces 334B - Eight Point Sets
题意难懂,其实就是x1<x2<x3与y1<y2<y3两两组合成九个点,去掉(x2,y2),剩余八个。这样的八个点才是满足要求的。
忘去重了
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; #define LL __int64 int a[10][2],b[5],c[5]; int main() { int n,i,j,tot; memset(b,-1,sizeof(b)); memset(c,-1,sizeof(c)); for(i=0;i<8;i++) { scanf("%d%d",&a[i][0],&a[i][1]); for(j=0;j<4;j++) { if(b[j]==-1){ b[j]=a[i][0]; break; } else if(b[j]==a[i][0]) break; } for(j=0;j<4;j++) { if(c[j]==-1){ c[j]=a[i][1]; break; } else if(c[j]==a[i][1]) break; } } for(i=0;i<8;i++) { for(j=i+1;j<8;j++) { if(a[i][0]==a[j][0]&&a[i][1]==a[j][1]){ printf("ugly\n"); return 0; } } } if(b[3]!=-1||c[3]!=-1||b[2]==-1||c[2]==-1) printf("ugly\n"); else { int x1=b[0],x2=b[1],x3=b[2]; int y1=c[0],y2=c[1],y3=c[2]; if(x1>x2) swap(x1,x2); if(x1>x3) swap(x1,x3); if(x2>x3) swap(x2,x3); if(y1>y2) swap(y1,y2); if(y1>y3) swap(y1,y3); if(y2>y3) swap(y2,y3); //printf("%d %d\n",x2,y2); for(i=0;i<8;i++) { if(a[i][0]==x2&&a[i][1]==y2) break; } if(i<8) printf("ugly\n"); else printf("respectable\n"); } return 0; }