SRM 503 DIV1 Easy - ToastXToast (復習×○)

問題


http://community.topcoder.com/stat?c=problem_statement&pm=11204&rd=14432

様々な種類のトーストがあり、ある焼き時間になるとポッピングシャワーとなるが
その時間未満だと生焼け、その時間を過ぎると焼きすぎになる。
ポッピングシャワーとなる焼き時間はトーストの種類により異なる。

生焼けのトーストとその焼き時間の集合、
焼きすぎのトーストとその焼き時間の集合が与えられた時、
最低何種類のトーストが存在したかを求める。
ただし、集合のうち生焼けと焼きすぎのペアは少なくとも1つは存在する。
そのようなペアが存在しなければー1を返す。

解き方


生焼けと焼きすぎの境界が1つしかなければ、生焼けのものを1つ、焼きすぎのものを1つにまとめることができるので1種類。
一番生焼けのものが時間が一番早く、一番焦げすぎのものが一番遅ければ、
一番生焼けのもの&一番焦げすぎのもの以外をまとめて1種類、
一番生焼け以外のもの&一番焦げすぎのものをまとめて1種類なので
合計2種類。
一番生焼けのものが時間が一番早く、一番焦げすぎのものが一番遅くなければ
ペアが存在しないのでー1。

コード


class ToastXToast {

public: int bake(vector<int> under, vector<int> over) {
int n=under.size();
int m=over.size();

sort(all(under));
sort(all(over));

if(under[0]>over[0]||over[m-1]<under[n-1])return -1;
if(under[n-1]<over[0])return 1;
return 2;
}

};
このエントリーをはてなブックマークに追加