找到目标排序元素作为key
迭代器使用
#include<iostream>
#include<cstring>
#include<algorithm>
#include<math.h>
#include<map>
#include<cstdio>
#include<string>//完整头文件
using namespace std;
map<int ,int>m;
int main ()
{
int n;
while(scanf("%d",&n)&&n)
{
m.clear();//初始化
m[1000000000]=1;
while(n--)
{
int k,g;
scanf("%d%d",&k,&g);
m[g]=k;
map<int ,int>::iterator it=m.find(g);
map<int ,int>::iterator it1=it;
++it1;
if(it==m.begin())//边界处理
{
cout<<k<<" "<<(++it)->second;
}
else if(it1==m.end())//空位置判断
{
it--;
cout<<k<<" "<<it->second;
}
else {
it--;
cout<<k<<" ";
g-it->first>it1->first-g?cout<<it1->second:cout<<it->second;
}
cout<<endl;
}
}
return 0;
}