#include "tickets.h"
#include <bits/stdc++.h>
#define dbg(x) cerr<<#x<<' '<<x<<endl;
#define ll long long
using namespace std;
void printvec(vector<ll>& vec)
{
for (auto &&e : vec)
{
cout << e << ' ';
}
cout << endl;
}
long long find_maximum(int k, std::vector<std::vector<int>> x) {
int n = x.size();
int m = x[0].size();
ll ans=0;
vector<ll> small(n);
vector<ll> big(n,k);
vector<pair<ll,ll>> v;
vector<pair<ll,ll>> fe(n,{0,m-1});
vector<vector<int>> anss(n,vector<int>(m,-1));
for (int i=0;i<n;i++)
{
for (int j=m-1;j>=m-k;j--)
{
ans+=x[i][j];
}
for (int j=0;j<k;j++)
{
ll val=x[i][j]+x[i][m-k+j];
v.push_back({val,i});
}
}
sort(v.begin(), v.end());
for (int i=0;i<n/2*k;i++)
{
small[v[i].second]++;
big[v[i].second]--;
ans-=v[i].first;
}
for (int i=0;i<k;i++)
{
vector<ll> vec(n);
iota(vec.begin(),vec.end(),0);
sort(vec.begin(), vec.end(), [&](ll ind1, ll ind2){return big[ind1] > big[ind2];});
for (int j=0;j<n;j++)
{
if(j<n/2)
{
big[vec[j]]--;
anss[vec[j]][fe[vec[j]].second]=i;
fe[vec[j]].second--;
}
else
{
small[vec[j]]++;
anss[vec[j]][fe[vec[j]].first]=i;
fe[vec[j]].first++;
}
}
}
allocate_tickets(anss);
return ans;
}
# | 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... |