Submission #864166

#TimeUsernameProblemLanguageResultExecution timeMemory
864166vjudge1Financial Report (JOI21_financial)C++17
48 / 100
4022 ms200896 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair typedef long long ll; typedef pair<long long, long long> pll; typedef pair<int,int> pii; typedef vector<long long> vl; typedef vector<int> vi; int n, d; vi arr; int dp[410][410][410]; //int f(int i, int j, int k){ // if(i >= n) return 0; // if(dp[i][j][k] != -1) return dp[i][j][k]; // // int ans = 0; // if(arr[i] < arr[j]) ans = max(ans, f(i+1, j, i)); // if(arr[i] > arr[j]) ans = max(ans, 1 + f(i+1, i, i)); // if(arr[i] == arr[j]) ans = max(ans, f(i+1, i, i)); // if(i-k<d || j == n) ans = max(ans, f(i+1, j, k)); // return dp[i][j][k] = ans; //} int cnt[7100], can_jump[7100][7100]; int main(){ cin>>n>>d; // arr.resize(n); // for(int i = 0; i < n; i++) cin>>arr[i]; // memset(dp, -1, sizeof dp); // arr.push_back(-1e9); // cout<<f(0, n, n)<<endl; for(int i = 1; i <= n; i++){ cin>>cnt[i]; arr.pb(cnt[i]); } sort(arr.begin(), arr.end()); memset(can_jump, 0, sizeof can_jump); arr.erase(unique(arr.begin(), arr.end()), arr.end()); for(int i = 1; i <= n; i++) cnt[i] = lower_bound(arr.begin(), arr.end(), cnt[i]) - arr.begin() + 1; for(int i = 1; i <= n; i++){ int last = i; for(int j = i +1; j <= n; j++){ if(j - last <= d && cnt[i] < cnt[j]) can_jump[i][j] = 1; if(j - last <= d && cnt[i] >= cnt[j]) last = j; } } int dp[n+1]; for(int i = 1; i <= n; i++){ dp[i] = 1; for(int j = 1; j < i; j++){ if(!can_jump[j][i]) continue; dp[i] = max(dp[i], dp[j] + 1); } } int ans = 0; for(int i = 1; i <= n; i++) ans = max(ans, dp[i]); cout<<ans<<endl; 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...