C. Day at the Beach---cf559


http://codeforces.com/problemset/problem/599/C

題目大意: 有n個城堡的高度   讓你最多分成幾個塊   每個塊排過序之后 整體是按照升序來的

分析:  i之前的最大值只要小於等於i之后的最小值  ans++

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <math.h>
#include <ctype.h>

using namespace std;
#define memset(a,b) memset(a,b,sizeof(a))
#define N 500100
typedef long long  ll;
const double ESP = 1e-8;
#define INF 0xfffffff

int a[N];
int l[N],r[N];

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        memset(l,0);
        memset(r,0);
        memset(a,0);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            l[i]=max(l[i-1],a[i]);
        }
        r[n]=a[n];
        for(int i=n-1;i>0;i--)
        {
            r[i]=min(r[i+1],a[i]);
        }
        int sum=0;
        for(int i=1;i<=n;i++)
        {
            if(l[i]<=r[i+1])
                sum++;
        }
        printf("%d\n",sum+1);
    }
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM