#include <bits/stdc++.h>
#include "tickets.h"
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ll long long
#define ld long double
const int N=1550;
int a[N][N];
vector<vector<int>>s;
vector<int>vrednosti[N];
int n,m;
ll izracunaj(vector<int>a){
sort(a.begin(),a.end());
//for(auto i:a) printf("%i ",i);printf("\n");
ll sum1=0;for(auto i:a) sum1+=i;
ll res=1e18,n=a.size();
for(ll i=0,sum=0;i<n;i++){
ll x=sum1-2*sum+a[i]*(2*i-n);
//printf("%lld\n",x);
res=min(res,x);
sum+=a[i];
}
return res;
}
ll Izracunaj(){
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(s[i][j]!=-1) vrednosti[s[i][j]].pb(a[i][j]);
}
}
ll res=0;for(int i=0;i<m;i++) if(!vrednosti[i].empty()) res+=izracunaj(vrednosti[i]);
return res;
}
long long find_maximum(int k, std::vector<std::vector<int>> a1){
n=a1.size(),m=a1[0].size();
for(int i=0;i<n;i++) for(int j=0;j<m;j++) a[i][j]=a1[i][j];
for(int i=0;i<n;i++){
vector<int>temp;
for(int j=0;j<m;j++) temp.pb(-1);
s.pb(temp);
}
vector<array<int,3>>nesto;
for(int i=0;i<n;i++){
int maks=0,ind=-1;
for(int j=0;j<m;j++){
if(a[i][j]>maks) maks=a[i][j],ind=j;
}
nesto.pb({maks,i,ind});
}
sort(nesto.begin(),nesto.end());
for(int i=n-1;i>=n/2;i--) s[nesto[i][1]][nesto[i][2]]=0;
for(int I=0;I<n/2;I++){
int i=nesto[I][1];
int mn=1e9,ind=-1;
for(int j=0;j<m;j++){
if(mn>a[i][j]) mn=a[i][j],ind=j;
}
s[i][ind]=0;
}
allocate_tickets(s);
return Izracunaj();
}
# | 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... |