#include #include #include #include struct eraName{ std::string name;//年号データ int first;//年号始まり int last;//年号終わり }; class eraNameSorter{ public: bool operator()(const eraName &era1,const eraName &era2) const{ //年号を古い順に並べる //年号が重なる場合があるかは不明、とりあえず重なりはないものとして処理してるけど少し不安 return era1.first eras; eraName era; for(int i=0;i>era.name>>era.first>>era.last; era.first=era.last-era.first; eras.push_back(era); } std::sort(eras.begin(),eras.end(),eraNameSorter());//年号の初年を基準にソート std::vector::iterator it; int time; for(int i=0;i>time; //timeを基準にバイナリサーチでerasから条件を満たす年号のiteratorを取得したい //できるだけequal_range()やfindのようなstl標準のアルゴリズムで処理したいのだけどどう書けばいいかわからない状態です。 //どのような記述がよいのでしょうか? } } int main(){ int n,m; std::cin>>n>>m; while(n!=0 || m!=0){ setData(n,m); std::cin>>n>>m; } }