Submission #39389

#TimeUsernameProblemLanguageResultExecution timeMemory
39389ExtazyMoney (IZhO17_money)C++14
0 / 100
0 ms13896 KiB
#include <bits/stdc++.h>
#define endl '\n'

using namespace std;

const int N = 1000007;

int n,a[N],from[N];
multiset < int > s;
int dp[N];

multiset < int >::iterator prev(multiset < int >::iterator it) {
    --it;
    return it;
}

bool are_consecutive(int v1, int v2) {
    if(v1>v2) return false;
    if(v1==v2) return true;
    return *prev(s.lower_bound(v2))==v1; 
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int i,j;

    scanf("%d", &n);
    for(i=1;i<=n;i++) {
        scanf("%d", &a[i]);
    }

    s.insert(a[1]);
    from[1]=1;
    for(i=2;i<=n;i++) {
        s.insert(a[i]);
        if(are_consecutive(a[i-1],a[i])) from[i]=from[i-1];
        else from[i]=i;
    }

    for(i=1;i<=n;i++) {
        dp[i]=1000007;
        for(j=from[i];j<=i;j++) {
            dp[i]=min(dp[i],dp[j-1]+1);
        }
    }
    printf("%d\n", dp[n]);
    
    return 0;
}

Compilation message (stderr)

money.cpp: In function 'int main()':
money.cpp:28:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
                    ^
money.cpp:30:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &a[i]);
                           ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...