1 #include <iostream>
2 #include <map>
3 #include <cstdio>
4 #include <cmath>
5 using namespace std;
6
7 //key:实力值power value:id号
8 int main(){
9 map<int,int> members;
10 members.insert(make_pair(1000000000,1));
11 int n,id,power;
12 scanf("%d",&n);
13 map<int,int>::iterator pre,next;
14 while(n --){
15 scanf("%d%d",&id,&power);
16 pre = next = members.lower_bound(power);
17 if(pre == members.begin()) //第一个人实力大于等于power
18 printf("%d %d\n",id,next -> second);
19 else if(next == members.end()){//所有人实力都小于power
20 pre --;
21 printf("%d %d\n",id,pre -> second);
22 }
23 else{
24 pre --; //1.next == power,输出就会是next(power) 2.next > power, 输出就会是pre和next中的一个
25 int abs1 = abs(pre -> first - power);
26 int abs2 = abs(next -> first - power);
27 if(abs1 > abs2)
28 printf("%d %d\n",id,next -> second);
29 else if(abs1 < abs2)
30 printf("%d %d\n",id,pre -> second);
31 else
32 printf("%d %d\n",id,pre -> second > next -> second ? next -> second : pre -> second);
33 }
34 if(members.count(power))
35 members[power] = min(members[power],id);
36 else
37 members.insert(make_pair(power,id));
38 }
39 return 0;
40 }