首页 > ACM题库 > 九度OJ > 九度-1170-找最小数[解题代码]
2013
12-13

九度-1170-找最小数[解题代码]

题目来源:2010年北京邮电大学计算机研究生机试真题

题目描述:

第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。 

输入:

输入有多组数据。
每组输入n,然后输入n个整数对。

输出:

输出最小的整数对。

样例输入:
5  
3 3  
2 2  
5 5  
2 1  
3 6
样例输出:
2 1

java 代码如下:
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		while(s.hasNextInt()){
			int n = s.nextInt();			
			TreeMap<Integer,Integer> map = new TreeMap<Integer,Integer>();
			for(int i=0; i<n; i++){
				int key = s.nextInt();
				int value = s.nextInt();
				if(map.containsKey(key)){
					if(value < map.get(key))
						map.put(key, value);
				}else
					map.put(key, value);			
			}			
			int key = map.firstKey();
			int value = map.get(key);
			System.out.println(key + " "+ value);
		}		
	}
}

/**************************************************************
	Problem: 1170
	User: coder
	Language: Java
	Result: Accepted
	Time:510 ms
	Memory:22704 kb
****************************************************************/


  1. #include <cstdio>

    int main() {
    //answer must be odd
    int n, u, d;
    while(scanf("%d%d%d",&n,&u,&d)==3 && n>0) {
    if(n<=u) { puts("1"); continue; }
    n-=u; u-=d; n+=u-1; n/=u;
    n<<=1, ++n;
    printf("%dn",n);
    }
    return 0;
    }