Submission #877838

#TimeUsernameProblemLanguageResultExecution timeMemory
877838alexddMoney (IZhO17_money)C++17
100 / 100
872 ms61956 KiB
#include<bits/stdc++.h> using namespace std; const int INF = 1e9; int n; int a[1000005]; int dp[1000005]; set<int> s; bool isgood(int le, int ri)///le < x < ri { if(s.empty()) return 1; auto it = s.upper_bound(le); if(it!=s.end() && *it < ri) return 0; return 1; } signed main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n; int ultr=0; int poz=0; for(int i=1;i<=n;i++) { cin>>a[i]; if(i>1 && a[i]<a[i-1]) ultr=i-1; for(int j=poz;j<i;j++) { if(j>=ultr && isgood(a[j+1],a[i]))///daca se poate { poz=j; dp[i] = dp[j]+1; break; } s.insert(a[j+1]); } } cout<<dp[n]; return 0; } /** 6 3 6 4 5 1 2 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...