답안 #364744

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
364744 2021-02-09T21:04:43 Z nicolaalexandra Money (IZhO17_money) C++14
0 / 100
1 ms 364 KB
#include <bits/stdc++.h>
#define DIM 1000010
using namespace std;

int aib[DIM],dp[DIM],v[DIM];
int n,i,maxi,val;

void update (int p, int val){
    for (;p<=maxi;p+=(p&-p))
        aib[p] += val;
}

int query (int p){
    int sol = 0;
    for (;p;p-=(p&-p))
        sol += aib[p];
    return sol;
}

int main (){

    //ifstream cin ("date.in");
    //ofstream cout ("date.out");

    cin>>n;
    for (i=1;i<=n;i++){
        cin>>v[i];
        maxi = max (maxi,v[i]);
    }

    i = 1;
    while (v[i] > v[i-1]){
        dp[i] = 1;
        i++;
    }

    int st = i;
    for (;i<=n;i++){
        if (v[i] < v[i-1]){
            st = i;
            dp[i] = dp[i-1] + 1;
        } else {

            do{
                val = query (v[i]-1) - query (v[st]);
                if (val){
                    update (v[st],1);
                    st++;
                }

            } while (val);

            dp[i] = dp[st-1] + 1;
        }
    }

    cout<<dp[n];

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Incorrect 1 ms 364 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Incorrect 1 ms 364 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Incorrect 1 ms 364 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Incorrect 1 ms 364 KB Output isn't correct
3 Halted 0 ms 0 KB -