#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1505;
int mn[MAXN], mx[MAXN];
long long dp[MAXN][MAXN];
long long find_maximum(int k, vector<vector<int>> x) {
int n = x.size(), m = x[0].size();
vector<vector<int>> ans(n);
for (int i = 0; i < n; i++) {
ans[i].resize(m);
for (int j = 0; j < m; j++)ans[i][j] = -1;
}
for(int i = 0; i < n; i++){
mn[i] = 0; mx[i] = 0;
for(int j = 0; j < m; j++){
if(x[i][mn[i]] > x[i][j]) mn[i] = j;
if(x[i][mx[i]] < x[i][j]) mx[i] = j;
}
}
dp[n][0] = 0;
for(int j = 1; j <= n/2; j++)dp[n][j] = -1e16;
for(int i = n-1; i >= 0; i--)
for(int j = 0; j <= n/2; j++){
dp[i][j] = -1e16;
if(j > 0)dp[i][j] = max(dp[i][j], dp[i+1][j-1] - x[i][mn[i]]);
if(n-i-j > 0)dp[i][j] = max(dp[i][j], dp[i+1][j] + x[i][mx[i]]);
}
int j = n/2;
for(int i = 0; i < n; i++){
if(dp[i][j] == dp[i+1][j-1] - x[i][mn[i]]){
ans[i][mn[i]] = 0;
j--;
}else ans[i][mx[i]] = 0;
}
allocate_tickets(ans);
return dp[0][n/2];
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |