#include<bits/stdc++.h> using namespace std; int main(){ set<int>s; //write your code here...... int n,m,temp=0; cin>>n>>m; for(int i=0;i<n;i++){ cin>>temp; s.insert(temp);//有序存储bucfu } // for(int i=0;i<m;i++){ // cin>>temp; // set<int>::iterator it=s.upper_bound(temp); // if(it==s.end()){ // cout<<-1<<endl; // } // else{ // cout<<*it<<endl; // } // } int flag=0; set<int>::iterator it; while(m--){ cin>>temp; it=s.find(temp); if(it==s.end()){ s.insert(temp); it=s.find(temp); flag=1; } it++; if(it==s.end())cout<<-1<<endl; else cout<<*it<<endl; if(flag){ flag=0; it--; s.erase(it); } } return 0; }
注意set的特性是有序不重复储存。熟练使用set的find方法以及特性可以解这个题目。