Description
在某條街上有着這麼一行比較奇怪的建築物:每棟建築物都是一個矩形,而且他們是一 個挨着一個的。每棟建築物都有它的寬度和高度。
Task:現在從左到右給出N 棟建築物的信息。其中每棟建築物的信息包括它的寬度和 高度。
然後現在交給你一個刷牆任務:你每一次刷牆的形狀都必須是一個矩形。
問你最少需 要多少次才能把所有建築物都刷完?
Input
輸入文件的第一行有一個整數N(1≤N≤10^6)。
接下來有N 行,每行有兩個整數Wi 和Hi(1≤Wi,Hi≤2^31-1,分別表示每棟建築物 的寬度和高度。
注意,建築物是從左到右一個緊挨着一個的。如果你還不明白這句話是什麼意思,那麼 就請看樣例的圖示吧!!!!
Output
輸出文件僅包含一個整數,表示你最少需要多少次才能完成這次刷牆任務。
Sample Input
Sample Output
HINT
數據約定:
對於40%的數據,1≤N≤5000
對於80%的數據,1≤N≤250000
對於100%的數據1≤N≤10^6
#include <stdio.h>
int c[1000001],b[1000001],a[1000001],m=1,ans=0,n;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&b[i],&c[i]);
}
a[0]=c[1];
for(int i=1;i<=n;i++)
{
while(m>0&&c[i]<a[m-1])
{
m--;
ans++;
}
if(c[i]>a[m-1])
{
a[m] = c[i];
m ++;
}
}
printf("%d",ans+m);
}