link:http://codeforces.com/problemset/problem/334/B
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <queue>
#include <deque>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <vector>
#include <utility>
#include <functional>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <numeric>
#include <cassert>
#include <ctime>
#include <iterator>
const int INF = 0x3f3f3f3f;
const int dir[][] = {{-,},{,},{,-},{,},{-,-},{-,},{,-},{,}};
using namespace std;
int main(void)
{
set<int> sadx, sady;
int x[] ,y[] ;
bool flag = true;
for (int i=;i<;++i)
{
scanf("%d%d",&x[i],&y[i]);
sadx.insert(x[i]); sady.insert(y[i]);
for (int j=;j<i;++j)
{
if (x[j]==x[i]&&y[j]==y[i])
{
flag = false;
}
}
}
if(!(sadx.size()==&&sady.size()==)) {
flag = false;
}
int midx, midy; midx=*(++sadx.begin());
midy=*(++sady.begin());
for (int i=;i<;++i)
{
if(midx==x[i]&&midy==y[i])
{
flag=false; break;
}
}
if(flag) printf("respectable\n");
else printf("ugly\n"); return ;
}
关键就是思路清晰,想清楚。
首先,8个点不能有相同的,然后,横纵坐标必须都是3个不同的数字。然后要找到中间的点,一定是不存在的,若存在就不符合。