题目:
神犇大战
轰地一声,applepi和sideman的大战开始了。
为了躲避手持凳子的applepi,sideman使出瞬移绝技在机房里到处乱窜。
不幸的是,applepi也有一双神眼,能够统计sideman在乱窜中会在哪些地方出现,以及出现的次数。
于是他就可以抄起板凳往次数最多的那个位置砸去,毕竟这样砸中的几率比较高嘛。
但是由于高一的新同学也在机房的某些位置,applepi不能砸向高一同学所在的位置。
思路:
排个序,然后遍历一遍,再遍历一遍高一同学的位置判断下。
暴力复杂度O(n^2)可过的。
代码:
#include<bits/stdc++.h>
using namespace std;
struct Pair{
int x,y,z;
Pair(int z=0){}
Pair(int xx,int yy,int z=0) {
x=xx,y=yy;
}
bool operator <(const Pair& oth) const {
return z>oth.z||(z==oth.z&&(x+y<oth.x+oth.y||(x+y==oth.x+oth.y&&x<oth.x)));
}
};
#define maxn 1000
#define read(x) scanf("%d",&x);
int n,m;
Pair a[maxn+5];
Pair b[maxn+5];
int cnt;
bool c[maxn+5];
int main() {
read(n);read(m);
for(int i=1;i<=n;i++) {
int x,y;
read(x);read(y);
a[i]=Pair(x,y);
}
sort(a+1,a+n+1);
b[0].x=-1;
for(int i=1;i<=n;i++) {
if(a[i].x==b[cnt].x&&a[i].y==b[cnt].y) b[cnt].z++;
else b[++cnt]=a[i],b[cnt].z=1;
}
sort(b+1,b+cnt+1);
for(int i=1;i<=m;i++) {
read(a[i].x);read(a[i].y);
for(int j=1;j<=cnt;j++) {
if(a[i].x==b[j].x&&a[i].y==b[j].y) {
c[j]=1;
}
}
}
for(int i=1;i<=cnt;i++) {
if(!c[i]) {
printf("%d %d",b[i].x,b[i].y);
break;
}
}
return 0;
}