안녕하세요. 오늘은 증가하는 수열을 찾을 거예요.

문제

https://www.acmicpc.net/problem/31395

아이디어

증가하는 구간끼리 묶어서 그 구간의 크기를 가지고 문제를 풀어주면 됩니다.

소스코드

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

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll N, i, before, now, cnt = 1;
    vector <ll> v;

    cin >> N >> before;
    for (i = 2; i <= N; i++)
    {
        cin >> now;
        if (before < now) cnt++;
        else
        {
            v.push_back(cnt);
            cnt = 1;
        }
        before = now;
    }
    v.push_back(cnt);

    ll sum = 0;
    for (ll x : v)
        sum += x * (x + 1) / 2;
    cout << sum;
}


안녕히계세요~

0개의 댓글