Submission #531764

#TimeUsernameProblemLanguageResultExecution timeMemory
531764andecaandeciMoney (IZhO17_money)C++17
100 / 100
922 ms51192 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
  cin.tie(0) -> ios_base::sync_with_stdio(0);

  int n;
  cin >> n;
  vector<int> a(n);
  for(int i=0;i<n;i++) cin >> a[i];
  set<int> s;
  int ans = 1, i = 0;
  while(i < n)
  {
    s.insert(a[i]);
    i++;
    if(a[i] < a[i - 1]) break;
  }
  for(;i<n;)
  {
    auto x = s.upper_bound(a[i]);
    ans++;
    int y;
    if(x == s.end())
    {
      // cout << "1 = " << i << '\n';
      y = a[i];
      while(i < n)
      {
        s.insert(a[i]);
        i++;
        if(a[i] < a[i - 1]) break;
      }
    }
    else if(a[i] <= *x)
    {
      // cout << "2 = " << i << " " << *x << "\n";
      y = *x;
      while(i < n && a[i] <= y)
      {
        // cout << i << " " << a[i] << '\n';
        s.insert(a[i]);
        i++;
        if(a[i] < a[i-1]) break;
      }
    }
    else // a[i] > the el after prev element
    {
      // cout << "3 = " << i << '\n';
      s.insert(a[i]);
    }
  }
  cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...