题目描述:
第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。
输入描述:
输入有多组数据。
每组输入n,然后输入n个整数对。
输出描述:
输出最小的整数对。
#include <iostream>
using namespace std;
const int MAX = 1000;
int main(){
int n;
while(~scanf("%d", &n)){
int a[MAX][2] = {0};
for(int i = 0; i < n; ++i){
scanf("%d%d", &a[i][0], &a[i][1]);
}
int min = a[0][0], k = 0;
for(int i = 1; i < n; ++i){
if(a[i][0] < min || a[i][0] == min && k == 0){
min = a[i][0];
k = i;
}else if(a[i][0] <= min && k != 0){
if(a[k][1] < a[i][1]){
continue;
}else{
k = i;
}
}
}
printf("%d %d", a[k][0], a[k][1]);
}
return 0;
}
改进:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef struct shudui{
int r,s;
};
bool compare(shudui x,shudui y){
if(x.r==y.r) return x.s<y.s;
else return x.r<y.r;
}
int main(){
int n;
shudui a[1000];
shudui *p=a;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%d%d",&a[i].r,&a[i].s);
}
sort(p,p+n,compare);
printf("%d %d\n",a[0].r,a[0].s);
}
return 0;
}