hdu4585NavigableSet
来源:互联网 发布:linux访问windows共享 编辑:程序博客网 时间:2024/06/06 17:48
题意大意:很多人想进少林寺,少林寺最开始只有一个和尚,每个人有有一个武力值,若这个人想进少林,必须和比他先进去的人比武并且武力值最接近他的比武,如果有相同的则选择武力值比他小的,问当他进去的时候要和哪个和尚比武。
import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.StreamTokenizer;import java.math.BigInteger;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedList;import java.util.NavigableSet;import java.util.PriorityQueue;import java.util.Queue;import java.util.Scanner;import java.util.SortedSet;import java.util.Stack;import java.util.StringTokenizer;import java.util.TreeSet;import org.omg.CORBA.Object;public class Main { public static void main(String[] args) throws IOException{ StreamTokenizer cin = new StreamTokenizer(new BufferedInputStream(System.in)); InputReader in = new InputReader(System.in) ; PrintWriter out = new PrintWriter(System.out) ; int n ; while((n = in.nextInt()) != 0){ new Task().solve(n , in, out) ; // out.flush() ; } out.flush() ; }}class Task{ static class E implements Comparable<E>{ int val ; int id ; E(int id , int val){ this.val = val ; this.id = id ; } public int compareTo(E o) { return Integer.compare(val, o.val) ; } } public void solve(int n , InputReader in , PrintWriter out) throws IOException{ NavigableSet<E> st = new TreeSet<Task.E>(); st.add(new E(1 , 1000000000)) ; for(int i = 0 ; i < n ; i++){ E e = new E(in.nextInt(), in.nextInt()) ; E big = st.ceiling(e) ; E less = st.floor(e) ; if(big.val == e.val || less == null) out.println(e.id + " " + big.id) ; else{ if(big.val - e.val < e.val - less.val) out.println(e.id + " " + big.id) ; else out.println(e.id + " " + less.id) ; } st.add(e) ; } }}class InputReader{ public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream){ reader = new BufferedReader(new InputStreamReader(stream), 32768) ; tokenizer = null ; } public String next(){ while(tokenizer == null || ! tokenizer.hasMoreTokens()){ try{ tokenizer = new StringTokenizer(reader.readLine()); }catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); }}
0 0
- hdu4585NavigableSet
- C文件读写函数介绍
- Codeforces Round #244 (Div. 2) B. Prison Transfer
- UVA 10820 Send a Table
- R 文件的应用错误,无法找到资源
- 【C】如何利用telnet进行发送邮件【密】
- hdu4585NavigableSet
- 虚拟机启动提示“内部错误”的解决办法
- Linux写时复制技术
- hdoj 1312 Red and Black
- UIWebView中弹出UIPopoverController
- 手势识别器
- 低功耗蓝牙开发技术概述(二)——控制器(下)
- IOS网络编程接口
- Linux 网卡驱动学习(九)(层二转发)