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\n",k,my_map[*iter]);

31             }

32             else if(iter==my_set.end()){

33                 iter--;

34                 printf("%d %d\n",k,my_map[(*iter)]);

35             }

36             else{

37                 int tmp=(*iter);

38                 iter--;

39                 if(tmp-g>=g-(*iter)){

40                     printf("%d %d\n",k,my_map[(*iter)]);

41                 }

42                 else{

43                     printf("%d %d\n",k,my_map[tmp]);

44                 }

45             }

46             my_set.insert(g);

47             my_map[g]=k;

48         }

49     }

50 }

 

你可能感兴趣的:(HDU)