Submission #86783

#TimeUsernameProblemLanguageResultExecution timeMemory
86783inomMoney (IZhO17_money)C++14
100 / 100
1473 ms166560 KiB
#include<bits/stdc++.h>

#define fi first
#define se second
#define sc scanf
#define pr printf
#define pb push_back
#define int long long
#define sz(c) (int)(c).size()
#define all(c) (c).begin(), (c).end()
#define rall(c) (c).rbegin(), (c).rend()
#define in freopen("parking.in", "r", stdin);
#define out freopen("parking.out", "w", stdout);

using namespace std;

#pragma GCC optimize("Ofast")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native")
#pragma GCC optimize("fast-math")
#pragma warning(disable : 4996)

const int N = 1000100;
const int INF = 1e15;

int TN = 1;

int n;
int ans;
int a[N];
multiset<int> st;

void solve() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    for (int i = 1; i <= n; i++) {   
        int cur;
        if (st.upper_bound(a[i]) == st.end()) {
            st.insert(INF); cur = INF; st.insert(a[i]);
        }
        else {
            cur = *st.upper_bound(a[i]); st.insert(a[i]);
        }
        int j = i;
        while (j + 1 <= n && a[j] <= a[j + 1] && a[j + 1] <= cur) {
            j++; st.insert(a[j]);
        }
        ans++; i = j;
    }
    cout << ans << "\n";
    return;
}

signed main() {
    ios_base::sync_with_stdio(0);
    // in; out; // cin >> TN;
    while (TN--) solve();
    return 0;
 }

Compilation message (stderr)

money.cpp:22:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning(disable : 4996)
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...