Submission #1163944

#TimeUsernameProblemLanguageResultExecution timeMemory
1163944AlgorithmWarriorCarnival Tickets (IOI20_tickets)C++20
27 / 100
372 ms51492 KiB
#include "tickets.h"
#include <bits/stdc++.h>

using namespace std;

long long find_maximum(int k,vector<vector<int>>x){
	int n = x.size();
	int m = x[0].size();
    int i,j;
    long long sum=0;
    vector<vector<int>>answer;
    vector<bool>ans(n,0);
    for(i=0;i<n;++i){
        vector<int>row;
        for(j=0;j<m;++j)
            row.push_back(-1);
        answer.push_back(row);
    }
    for(i=0;i<n;++i){
        int cntm=0,cntM=0;
        long long summ=0,sumM=0;
        long long summij=0;
        vector<pair<int,int>>mij;
        vector<bool>util(n,1);
        util[i]=0;
        for(j=0;j<n;++j)
        if(i!=j){
            if(x[j].back()<x[i][0]){
                ++cntm;
                summ+=x[i][0]-x[j][0];
                util[j]=0;
            }
            else
            if(x[i][0]<x[j][0]){
                ++cntM;
                sumM+=x[j].back()-x[i][0];
            }
            else{
                summij+=x[j].back()-x[i][0];
                mij.push_back({x[j][0]+x[j].back(),j});
            }
        }
        if(cntm<n/2 && cntM<=n/2){
            sort(mij.begin(),mij.end());
            summij+=summ+sumM;
            int alegem=n/2-1-cntm;
            for(j=0;j<alegem;++j){
                summij+=2*x[i][0]-mij[j].first;
                util[mij[j].second]=0;
            }
            if(sum<summij){
                sum=summij;
                ans=util;
            }
        }
    }
    for(i=0;i<n;++i)
        if(ans[i])
            answer[i].back()=0;
        else
            answer[i][0]=0;
	allocate_tickets(answer);
	return sum;
}
#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...