제출 #763380

#제출 시각아이디문제언어결과실행 시간메모리
763380vjudge1Financial Report (JOI21_financial)C++17
5 / 100
39 ms3648 KiB
// #cheat_when_I_was_young // #cheatkhitacontre #khionhatoicheat // #thaycuckythatvong #include "bits/stdc++.h" using namespace std; #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) //#pragma GCC optimize("O3,unroll-loops") //#pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma") const int NM = 3e5 + 5; int n, d, a[NM], res; vector<int> lis, tmp = {0}, in = {0}; int value() { int m = tmp.size() - 1; int ma[m+1]; ma[0] = 0; for (int i = 1; i <= m; ++i) ma[i] = max(ma[i-1], tmp[i]); int ans = 0; for (int i = 1; i <= m; ++i) if (tmp[i] > ma[i-1]) ++ans; return ans; } void backtrack(int x) { if (x == n) { if (in.back() != 0 && x - in.back() > d) return; tmp.push_back(a[n]); res = max(res, value()); tmp.pop_back(); return; } backtrack(x+1); if (in.back() != 0 && x - in.back() > d) return; tmp.push_back(a[x]); in.push_back(x); backtrack(x+1); tmp.pop_back(); in.pop_back(); } signed main() { IOS; cin >> n >> d; for (int i = 1; i <= n; ++i) cin >> a[i]; if (n <= 20) { backtrack(1); cout << res; return 0; } if (d == n) { for (int i = 1; i <= n; ++i) { if (!lis.size() || lis.back() < a[i]) lis.push_back(a[i]); else *lower_bound(lis.begin(), lis.end(), a[i]) = a[i]; } cout << lis.size(); } }
#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...