HDU 4585

 1 //也是个水题,不过以前没用过set。。。。所以逼着我去学。
 2 
 3 
 4 
 5 #include<cstdio>
 6 #include<iostream>
 7 #include<string>
 8 #include<map>
 9 #include<set>
10 #include<algorithm>
11 #include<stdlib.h>
12 using namespace std;
13 
14 set<int> my_set;
15 map<int,int> my_map;
16 
17 int main(){
18     int n;
19     while(scanf("%d",&n),n){
20         my_set.clear();
21         my_map.clear();
22         my_set.insert(1000000000);
23         my_map[1000000000]=1;
24         for(int i=0;i<n;i++){
25             int k,g;
26             scanf("%d%d",&k,&g);
27             set<int>::iterator iter=my_set.lower_bound(g);
28             if(iter==my_set.begin()){
29                 //int t=*iter;
30                 printf("%d %d
",k,my_map[*iter]);
31             }
32             else if(iter==my_set.end()){
33                 iter--;
34                 printf("%d %d
",k,my_map[(*iter)]);
35             }
36             else{
37                 int tmp=(*iter);
38                 iter--;
39                 if(tmp-g>=g-(*iter)){
40                     printf("%d %d
",k,my_map[(*iter)]);
41                 }
42                 else{
43                     printf("%d %d
",k,my_map[tmp]);
44                 }
45             }
46             my_set.insert(g);
47             my_map[g]=k;
48         }
49     }
50 }
原文地址:https://www.cnblogs.com/Stomach-ache/p/3703209.html