HDU ACM 4585 Shaolin->STL中set或map的应用

来源:互联网 发布:网络发帖推广 编辑:程序博客网 时间:2024/05/01 13:19

题意:很多人想进少林,少林最开始只有一个和尚,每个人有一个武力值,若这个人想进少林,必须和比他先进去的人比武并且武力值最接近他的比武,如果有相同的则选择武力值比他小的,问当他进去的时候要和哪个和尚比武。

分析:使用set或map方便解决。

#include<iostream>#include<map>#include<algorithm>using namespace std;int main(){int n,i,id,g;map<int,int>::iterator it,it1,it2;while(cin>>n,n){map<int,int> m;m[1000000000]=1;for(i=1;i<=n;i++){scanf("%d%d",&id,&g);it=m.lower_bound(g);if(it==m.begin())cout<<id<<" "<<it->second<<endl;else{it1=it;it2=--it;if(it1->first-g>=g-it2->first)  //等号是为了当两边相等时输出值低的cout<<id<<" "<<it2->second<<endl;elsecout<<id<<" "<<it1->second<<endl;}m[g]=id;}}return 0;}


0 0