Submission #1161823

#TimeUsernameProblemLanguageResultExecution timeMemory
1161823KK_1729Catfish Farm (IOI22_fish)C++17
0 / 100
959 ms2162688 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; // #define int long long #define FOR(i,a,b) for (int i = (a); i < (b); ++i) #define pb push_back #define all(a) a.begin(), a.end() #define endl "\n" void printVector(vector<int> a){ for (auto x: a) cout << x << " "; cout << endl; } long long max(long long x, long long y){ if (x > y) return x; else return y; } long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) { vector<vector<pair<int, int>>> o(N); FOR(i,0,M) o[X[i]].pb({Y[i], W[i]}); FOR(i,0,N) sort(all(o[i])); vector<vector<long long>> dp1(N+1, vector<long long>(N+1)); // when it is currently increasing vector<vector<long long>> dp2(N+1, vector<long long>(N+1)); // when it is currently decreasing vector<vector<long long>> prefix(N+1, vector<long long>(N+1)); FOR(i,0,N){ for (auto item: o[i]) prefix[i][item.first] = item.second; FOR(j,1,N) prefix[i][j] += prefix[i][j-1]; } long long answer = 0; FOR(i,1,N){ int c = 0; FOR(j,0,N){ c = max(c, dp1[i-1][j]-prefix[i-1][j]); dp1[i][j] = max(dp1[i-1][j], prefix[i-1][j]+c); } if (i > 1){ // Case where there is no pier in (i-1) c = dp2[i-2][N]; FOR(j,0,N){ c = max(c, dp1[i-2][j]); dp1[i][j] = max(dp1[i][j], prefix[i-1][j]+c); } c = 0; for (int j = N-1; j >= 0; j--){ c = max(c, max(dp1[i-2][j], dp2[i-2][j])+prefix[i-1][j]); dp1[i][j] = max(dp1[i][j], c); } dp1[i][N] = dp1[i-1][N]; } int d = 0; FOR(j,0,N){ d = max(d, dp2[i-1][j]+prefix[i][j]); d = max(d, dp1[i-1][j]+prefix[i][j]); dp2[i][j] = max(dp2[i][j], d-prefix[i][j]); } int u = 0; FOR(j,0,N) u = max(u, max(dp1[i-1][j], dp2[i-1][j])+prefix[i][j]); u = max(u, dp2[i-1][N]); dp2[i][N] = u; FOR(j,0,N+1) answer = max(answer, dp1[i][j]); FOR(j,0,N+1) answer = max(answer, dp2[i][j]); } return answer; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...