Submission #353686

#TimeUsernameProblemLanguageResultExecution timeMemory
353686amunduzbaevCarnival Tickets (IOI20_tickets)C++14
0 / 100
661 ms65644 KiB
#include "tickets.h"

#ifndef EVAL
#include "grader.cpp"
#endif

#include <bits/stdc++.h>
using namespace std;
 
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define ub upper_bound
#define lb lower_bound
#define ll long long
#define ld long double
#define pii pair<int, int>
#define pll pair<ll, ll>
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(),x.rend()
#define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define vll vector<ll>
#define vii vector<int>
#define vpii vector<pii>
#define vpll vector<pll>
#define cnt(a)__builtin_popcount(a)
template<class T> bool umin(T& a, const T& b) {return a > b? a = b, true:false;}
template<class T> bool umax(T& a, const T& b) {return a < b? a = b, true:false;}

const ll inf = 1e18+7;
const int N = 2e5+5;

long long find_maximum(int k, vector<vector<int>> x) {
	int n = sz(x);
	int m = sz(x[0]);
	vector<vii>v[2];
	v[0].resize(n);
	v[1].resize(n);
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++) v[x[i][j]][i].pb(j); 
	}
	ll ans = 0;
	
	vector<vii> aa(n, vii(m, 0));
	
	//for(int i=0;i<n;i++){
		//cout<<i<<" : ";
		//for(auto x:v[0][i]) cout<<x<<" ";
		//cout<<"\n";
	//}
	//cout<<"\n";
	//for(int i=0;i<n;i++){
		//cout<<i<<" : ";
		//for(auto x:v[1][i]) cout<<x<<" ";
		//cout<<"\n";
	//}
	//cout<<"\n";
	for(int i=0;i<k;i++){
		vector<int> used;
		int t1 = 0, t0 = 0;
		
		for(int j=0;j<n;j++){
			if(sz(v[0][j]) == 0) t1++;
			if(sz(v[1][j]) == 0) t0++;
		}
		for(int j=0;j<n;j++){
			if(sz(v[0][j]) == 0){
				used.pb(v[1][j].back());
				v[1][j].pop_back();
			}else if(sz(v[1][j]) == 0){
				used.pb(v[0][j].back());
				v[0][j].pop_back();
			}else{
				if(t1 < t0){
					used.pb(v[1][j].back());
					v[1][j].pop_back();
					t1++;
				}else if(t1 > t0){
					used.pb(v[0][j].back());
					v[0][j].pop_back();
					t0++;
				}else{
					if(sz(v[0][j]) > sz(v[1][j])){
						used.pb(v[0][j].back());
						v[0][j].pop_back();
						t0++;
					}else{
						used.pb(v[1][j].back());
						v[1][j].pop_back();
						t1++;
					}
				}
			}
		}
		
		//for(auto x:used) cout<<x<<" ";
		//cout<<"\n";
		
		//cout<<i<<" ";
		for(int j=0;j<n;j++){
			//cout<<used[j]<<" ";
			aa[j][used[j]] = i+1;
		} //cout<<"\n";
		
		ans += min(t0, t1);
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			aa[i][j]--;
		}
	}
	//for(int i=0;i<n;i++){
		//for(int j=0;j<m;j++){
			//cout<<aa[i][j]<<" ";
		//}cout<<endl;
	//}
	allocate_tickets(aa);
	return ans;
}
/*

4 3 2
1 1 0
0 1 1
0 0 1
0 1 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...