Pla 單調棧

Description

在某條街上有着這麼一行比較奇怪的建築物:每棟建築物都是一個矩形,而且他們是一 個挨着一個的。每棟建築物都有它的寬度和高度。

Task:現在從左到右給出N 棟建築物的信息。其中每棟建築物的信息包括它的寬度和 高度。

然後現在交給你一個刷牆任務:你每一次刷牆的形狀都必須是一個矩形。

問你最少需 要多少次才能把所有建築物都刷完?

Input

輸入文件的第一行有一個整數N(1≤N≤10^6)。

接下來有N 行,每行有兩個整數Wi 和Hi(1≤Wi,Hi≤2^31-1,分別表示每棟建築物 的寬度和高度。

注意,建築物是從左到右一個緊挨着一個的。如果你還不明白這句話是什麼意思,那麼 就請看樣例的圖示吧!!!!

Output

輸出文件僅包含一個整數,表示你最少需要多少次才能完成這次刷牆任務。

Sample Input

51 21 32 22 51 4

Sample Output

4

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);
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章