#include<bits/stdc++.h>
#include "tickets.h"
#include <vector>
using namespace std;
const int N = 1510;
const long long inf = 1e18;
int ans[N][N];
long long l[N], r[N];
long long dp[N][N];
long long cnt[N];
set <int> linhas;
long long best[N][N];
long long find_maximum(int k, std::vector<std::vector<int>> x) {
int n = x.size();
int m = x[0].size();
vector <array <long long, 3>> valores;
for(int i = 0;i < n;i++){
l[i] = x[i][0];
r[i] = x[i][m-1];
valores.push_back({l[i], i, 0});
valores.push_back({r[i], i, 1});
linhas.insert(i);
}
sort(valores.begin(),valores.end());
memset(ans, -1, sizeof ans);
int qtdmin = n/2;
long long res = 0;
for(int i = 0;i < n;i++){
cnt[valores[i][1]]++;
if(cnt[valores[i][1]] == 2){
ans[valores[i][1]][0] = 0;
res -= l[valores[i][1]];
linhas.erase(valores[i][1]);
qtdmin--;
}
}
for(int i = 0;i < n;i++){
if(cnt[i] == 0){
ans[i][m-1] = 0;
linhas.erase(i);
res += r[i];
}
}
int con = 1;
dp[0][0] = 0;
for(int i = 1;i <= qtdmin;i++){
dp[0][i] = -inf;
}
for(auto x : linhas){
for(int i = 0;i <= qtdmin;i++){
dp[con][i] = dp[con-1][i]+r[x];
best[con][i] = i;
if(i > 0)
if(dp[con][i] < dp[con-1][i-1]-l[x]){
dp[con][i] = dp[con-1][i-1]-l[x];
best[con][i] = i-1;
}
}
con++;
}
con--;
res += dp[con][qtdmin];
while(con > 1){
auto it = linhas.end();
it--;
linhas.erase(it);
int x = *it;
if(best[con][qtdmin]-qtdmin == 0){
ans[x][m-1] = 0;
}
else{
ans[x][0] = 0;
qtdmin--;
}
con--;
}
vector <vector <int>> answer;
for(int i = 0;i < n;i++){
vector <int> aux;
for(int j = 0;j < m;j++){
aux.push_back(ans[i][j]);
}
answer.push_back(aux);
}
allocate_tickets(answer);
return res;
}
# | 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... |