set用法,不断插入查找
#include <cstdio>
#include <set>
using namespace std;
struct node
{
int id;
int grade;
bool operator < (const node &v) const
{
return v.grade > grade;
}
node (int x,int y)
{
id=x;
grade=y;
}
};
set<node> s;
set<node>::iterator p,q;
int main()
{
//freopen("in.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF)
{
if(!n) break;
s.clear();
s.insert(node(1,1000000000));
int x,y;
for(int i=1; i<=n; ++i)
{
scanf("%d%d",&x,&y);
p=s.lower_bound(node(x,y));
if(p==s.begin()) printf("%d %d\n",x,p->id);
else
{
q=p;
p--;
if(q->grade-y >= y-p->grade) printf("%d %d\n",x,p->id);
else printf("%d %d\n",x,q->id);
}
s.insert(node(x,y));
}
}
return 0;
}