Submission #563651

#TimeUsernameProblemLanguageResultExecution timeMemory
563651OttoTheDinoFinancial Report (JOI21_financial)C++17
0 / 100
54 ms6988 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,s,e) for (int i = s; i <= e; ++i) #define rrep(i,s,e) for (int i = s; i >= e; --i) #define pb push_back #define pf push_front #define fi first #define se second #define all(a) a.begin(), a.end() #define len(a) (int)a.size() typedef long long ll; typedef pair<int, int> ii; typedef vector<ii> vii; typedef vector<int> vi; typedef vector<double> vd; typedef vector<string> vs; typedef vector<ll> vll; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, d; cin >> n >> d; int a[n+1]; rep (i,1,n) cin >> a[i]; set<int> mi; rep (i,1,d) mi.insert(a[i]); set<ii> st; st.insert({0,0}); ii erase[n+1]; rep (i,1,n) { // cout << i << ": \n"; // for (ii sth : st) { // cout << sth.fi << " " << sth.se << "\n"; // } if (erase[i].fi) st.erase(erase[i]); mi.erase(a[i]); if (i+d<=n) mi.insert(a[i+d]); auto it = st.lower_bound({a[i],0}); if (it==st.end()) { st.insert({a[i], (*--it).se+1}); if (a[i] < *mi.begin() && i+d+1 <= n) erase[i+d+1] = {a[i], (*it).se+1}; } else if (a[i]!=(*it).fi) { ii el = *it; st.insert({a[i],(*--it).se+1}); if ((*it).se+1==el.se) st.erase(el); if (a[i] < *mi.begin() && i+d+1 <= n) erase[i+d+1] = {a[i], (*st.rbegin()).se+1}; } } cout << (*st.rbegin()).se << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...