#include <bits/stdc++.h>
#include "tickets.h"
#define int long long
using namespace std;
/*
void allocate_tickets(vector<vector<int32_t>> ans){
int n=ans.size();
int m=ans[0].size();
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)cout<<ans[i][j]<<' ';
cout<<endl;
}
}
//*/
long long find_maximum(int32_t k, vector<std::vector<int32_t>> x) {
int n = x.size();
int m = x[0].size();
vector<int> maksimum(n,-1);
vector<int> minimum(n,10000000000000ll);
vector<int> pmin(n,-1ll);
vector<int> pmax(n,-1ll);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
minimum[i]=min(minimum[i],(int)x[i][j]);
maksimum[i]=max(maksimum[i],(int)x[i][j]);
if(minimum[i]==x[i][j])pmin[i]=j;
if(maksimum[i]==x[i][j])pmax[i]=j;
}
}
//for(int i=0;i<n;i++)cout<<minimum[i]<<' ';
//cout<<endl;
vector<vector<int>> dp(n+1);
for(int i=0;i<n+1;i++)dp[i].assign(n/2+1,0ll);
vector<vector<int>> potez(n+1);
for(int i=0;i<n+1;i++)potez[i].assign(n/2+1,0ll);
for(int j=1;j<n+1;j++){
dp[j][0]=dp[j-1][0]-minimum[j-1];
}
for(int i=1;i<n+1;i++){
for(int j=1;j<n/2+1;j++){
dp[i][j]=max(dp[i-1][j-1]+maksimum[i-1],dp[i-1][j]-minimum[i-1]);
if(dp[i][j]==dp[i-1][j-1]+maksimum[i-1])potez[i][j]=1;
}
}
//for(int i=0;i<n/2+1;i++){
// for(int j=0;j<n+1;j++)cout<<dp[j][i]<<' ';
// cout<<endl;
//}
//for(int i=0;i<n/2+1;i++){
// for(int j=0;j<n+1;j++)cout<<potez[j][i]<<' ';
// cout<<endl;
//}
vector<vector<int32_t>> ans(n);
for(int i=0;i<n;i++)ans[i].assign(m,-1);
int red=n/2;
for(int i=n;i>0;i--){
if(potez[i][red]==1)ans[i-1][pmax[i-1]]=0;
else ans[i-1][pmin[i-1]]=0;
red-=potez[i][red];
}
allocate_tickets(ans);
return dp[n][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... |