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 }