热血格斗场 计蒜客 - T1230 (map使用)

原题链接

AC代码:

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;
const int maxn=1e6+5;
int main(){
	ios::sync_with_stdio(false);
	map<int,int>mp;
	map<int,int>::iterator it;
	mp[1e9]=1;
	int t;
	cin>>t;
	while(t--){
		int id,x,dif,ans,flag=1;
		cin>>id>>x; 
		it=mp.upper_bound(x);//先找到第一个大于x的元素位置
		if(it==mp.end())it--,flag=0;//不存在大于x的元素,则向前找就是第一个比它小的元素
		dif=it->first-x;
	    ans=it->second;
		if(flag&&it!=mp.begin()){
			it--;//如果存在比它大的元素,则跟比它小的那个元素比较一下
			if(dif>=x-(it->first))ans=it->second; 
		}
		cout<<id<<" "<<ans<<endl;
		mp[x]=id; 
	}
}

猜你喜欢

转载自blog.csdn.net/Alanrookie/article/details/107154218