Submission #1132083

#TimeUsernameProblemLanguageResultExecution timeMemory
1132083StefanSebezCarnival Tickets (IOI20_tickets)C++20
11 / 100
3 ms6728 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...