L2-014. 列車調度
時間限制
300 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
陳越
火車站的列車調度鐵軌的結構如下圖所示。
Figure
兩端分別是一條入口(Entrance)軌道和一條出口(Exit)軌道,它們之間有N條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入,最後從出口離開。在圖中有9趟列車,在入口處按照{8,4,2,5,3,9,1,6,7}的順序排隊等待進入。如果要求它們必須按序號遞減的順序從出口離開,則至少需要多少條平行鐵軌用於調度?
輸入格式:
輸入第一行給出一個整數N (2 <= N <= 105),下一行給出從1到N的整數序號的一個重排列。數字間以空格分隔。
輸出格式:
在一行中輸出可以將輸入的列車按序號遞減的順序調離所需要的最少的鐵軌條數。
輸入樣例:9 8 4 2 5 3 9 1 6 7輸出樣例:
4
lower_bound(val): 返回容器中第一個值【大於或等於】val的元素的iterator位置。
upper_bound(val): 返回容器中第一個值【大於】val的元素的iterator位置。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <set>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
int t, n;
set<int> S;
set<int>::iterator it;
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d", &t);
if(S.empty()) S.insert(t);
else
{
it = S.lower_bound(t);
if(it == S.end())
S.insert(t);
else
{
S.erase(it);
S.insert(t);
}
}
}
printf("%d\n", S.size());
return 0;
}