|
ちょっと考えてみましが if 文いっぱいで美しくないですね・・・
C++ っぽさもない・・・
とりあえずサンプルの結果にはなります。
読み込み部分は固定で与えちゃってます。
bool search(const vector<int>& list)
{
int r = 0, l = 0;
int* first = NULL, *second = NULL;
for (auto it = list.begin(); it != list.end(); ++it)
{
if (r + 1 == *it) r = *it;
else if (l + 1 == * it) l = *it;
else
{
if (r > l)
{
first = &r;
second = &l;
}
else
{
first = &l;
second = &r;
}
if (*first < *it) *first = *it;
else if (*second < *it) *second = *it;
else return false;
}
}
return true;
}
int main(int argc, char** argv)
{
vector<int> list1 = { 3, 1, 4, 2, 5, 6, 7, 8, 9, 10 };
vector<int> list2 = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
cout << (search(list1) ? "OK" : "NG") << endl;
cout << (search(list2) ? "OK" : "NG") << endl;
}
|