Submission #419907

#TimeUsernameProblemLanguageResultExecution timeMemory
419907mosiashvililukaCarnival Tickets (IOI20_tickets)C++14
100 / 100
1022 ms89520 KiB
#include "tickets.h"
#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e,i,j,ii,jj,zx,xc,f[1509][1509],k,pi,ee,qi,tes,t;
long long jm;
pair <int, int> q[3000009];
pair <int, pair <int, int> > p[3000009];
int bo[1509];
vector <vector <int> > ans;
/*void allocate_tickets(vector <vector <int> > XX){
	int qw=0,we=0;
	for(qw=0; qw<a; qw++){
		for(we=0; we<b; we++){
			cout<<XX[qw][we]<<" ";
		}
		cout<<endl;
	}
}*/
long long find_maximum(int K, vector<vector<int> > Xx) {
	k=K;
	a=Xx.size();b=Xx[0].size();
	ans.resize(a);
	for(i=0; i<a; i++){
		ans[i].resize(b);
		for(j=0; j<b; j++){
			f[i][j]=Xx[i][j];
		}
	}
	jm=0;
	for(i=0; i<a; i++){
		for(j=0; j<k; j++){
			jm-=f[i][j];
			bo[i]++;
			ii=i;jj=b-(k-j);
			pi++;
			p[pi].first=-(f[i][jj]+f[i][j]);
			p[pi].second=make_pair(i,jj);
		}
	}
	sort(p+1,p+pi+1);
	for(i=1; i<=pi; i++){
		p[i].first=-p[i].first;
	}
	ee=a*k/2;
	for(e=1; e<=ee; e++){
		i=p[e].second.first;j=p[e].second.second;
		jm+=p[e].first;
		ii=i;jj=b-(k-j);
		bo[i]--;
	}
	for(i=0; i<a; i++){
		for(j=0; j<b; j++){
			ans[i][j]=-1;
		}
	}
	t=0;
	while(k>0){
		qi=-1;
		for(i=0; i<a; i++){
			qi++;
			q[qi].first=bo[i];
			q[qi].second=i;
		}
		sort(q,q+qi+1);
		for(ii=0; ii<a/2; ii++){
			i=q[ii].second;
			j=b-(k-bo[i]);
			ans[i][j]=t;
		}
		for(ii=a/2; ii<a; ii++){
			i=q[ii].second;
			j=bo[i]-1;
			ans[i][j]=t;
			bo[i]--;
		}
		k--;t++;
	}
	allocate_tickets(ans);
	return jm;
}
/*int main(){
	vector <vector <int> > qw;
	cin>>a>>b>>k;
	qw.resize(a);
	for(i=0; i<a; i++){
		for(j=0; j<b; j++){
			cin>>c;
			qw[i].push_back(c);
		}
	}
	cout<<find_maximum(k,qw);
	return 0;
}*/
#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...