标签:
Shaolin
Time Limit: 1000 MS Memory Limit: 32768 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
3 2 1 3 3 4 2 0
2 1 3 2 4 2
1 #include <iostream> 2 #include <set>//利用set可去重按升序排序 3 #include <map>//利用map将id与武力值映射 4 #include <cmath> 5 using namespace std; 6 int main(){ 7 int n,k,g; 8 set<int>s; 9 map<int,int>m; 10 while(cin>>n){ 11 if(n==0) break; 12 s.clear(); 13 m.clear(); 14 s.insert(1000000000);//将master入集合 15 m[1000000000]=1;//记录master的编号 16 while(n--){ 17 cin>>k>>g;//输入新和尚的编号k与武力值g 18 cout<<k<<" "; 19 set<int>::iterator it1,it2; 20 it1=s.lower_bound(g);//it1为第一个武力值大于等于g的和尚的地址 21 if(it1==s.begin()) cout<<m[*it1]<<endl; 22 else { 23 it2=it1--; 24 if(abs(*it1-g)>abs(*it2-g)) cout<<m[*it2]<<endl; 25 else cout<<m[*it1]<<endl; 26 } 27 s.insert(g);//当前新和尚比武完成,将他的武力值入集合,供以后使用 28 m[g]=k;//记录该武力值g所对应的编号k 29 } 30 } 31 return 0; 32 }
标签:
原文地址:http://www.cnblogs.com/yangxingzhe8102/p/5932524.html