This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define iloop(x, n) for (long long i = x; i < n; ++i)
#define jloop(x, n) for (long long j = x; j < n; ++j)
#define kloop(x, n) for (long long k = x; k < n; ++k)
#define dloop(x, n) for (long long d = x; d >= n; --d)
#define ll long long
#define pll pair<long long, long long>
#define pii pair<int, int>
#define vi vector<long long>
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define int long long
#define endl '\n'
#define debug(x) cout << #x << ": " << x << endl
#define FASTIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
signed main(){
int n; cin >> n;
vi v(n); iloop(0, n) cin >> v[i];
set<int> s;
int i = 0;
int cnt = 0;
while (i < n){
int j = i;
//debug(i);
vi c;
c.pb(v[i]);
while (j + 1 < n and v[j+1] >= v[j]){
j++;
c.pb(v[j]);
}
//debug(j);
int first = c[0];
auto it = s.upper_bound(first);
int ptr = 0;
int sz = (int)c.size();
if (ptr + 1 == sz) cnt++;
else while (ptr + 1 < sz){
while (ptr + 1 < sz and (c[ptr+1] <= *it or it == s.end())){
ptr++;
}
//debug(ptr);
if (it != s.end())it++;
cnt++;
}
for (auto it : c) s.insert(it);
i = j + 1;
}
cout << cnt;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |