TakefumiYamamura / programming_contest

1 stars 0 forks source link

AtCoder Beginner Contest 038 #12

Open TakefumiYamamura opened 8 years ago

TakefumiYamamura commented 8 years ago

http://abc038.contest.atcoder.jp/

TakefumiYamamura commented 8 years ago

C - 単調増加

時間制限 : 2sec / メモリ制限 : 256MB

問題文

N個の数からなる数列が与えられます。i番目の数をaiと呼びましょう。

al,al+1,…,ar が単調増加、すなわち l≦r であって ai<ai+1 がl≦i<r を満たす全てのiに対して成り立つような(l,r)の数を求めてください。

制約

1≦N≦105 1≦ai≦105 aiは全て整数である 部分点

Note

just doing Scepter taking method

#include <iostream>
#define ll long long 
using namespace std;

int main(){
    ll n;
    ll a[1000001];
    cin >> n;   
    for (ll i = 0; i < n; ++i)
    {
        cin >> a[i];
    }
    a[n] = -1;

    ll l = 0;
    ll ans = 0;
    for (ll r = 0; r < n; ++r)
    {
        if(a[r] >= a[r+1]){
            ans += (r-l+1) * (r-l+2) / 2;
            l = r+1;
        }
    }

    cout << ans << endl;

}