제출 #1333780

#제출 시각아이디문제언어결과실행 시간메모리
1333780sporknivesIMO (EGOI25_imo)C++20
23 / 100
22 ms1504 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;

bool cmp(pair<vector<int>,int> p1, pair<vector<int>,int> p2) {
	vector<int> v1 = p1.first, v2 = p2.first;
	int id1 = p1.second, id2 = p2.second;
	int s1=0; for(int x:v1)s1+=x;
	int s2=0; for(int x:v2)s2+=x;
	if(s1!=s2) {
		return s1>s2;
	}
	else return id1<id2;
}

signed main() {
	int n,m,k; cin>>n>>m>>k;
	vector<pair<vector<int>, int>> a(n);
	
	for(int i=0;i<n;i++) {
		vector<int> score(m);
		for(int j=0;j<m;j++)cin>>score[j];
		a[i]={score,i};
	}
	
	sort(a.begin(),a.end(),cmp);
	
	
	sort(a[0].first.begin(), a[0].first.end());
	sort(a[1].first.begin(), a[1].first.end(), greater<int>());
	//for(int i=0;i<m;i++) cout<<(a[0].first)[i]<<" ";
	//cout<<"\n";
	//for(int i=0;i<m;i++) cout<<(a[1].first)[i]<<" ";
	//cout<<"\n";
	int mn=0; for(int x: a[0].first)mn+=x;
	int s=0; for(int x: a[1].first)s+=x;
	int mx=s;
	int ans=0;
	
	for(int j=0;j<m;j++) {
		mx+=k-(a[1].first)[j];
		if((a[0].second>a[1].second && mn>mx) || (a[1].second>a[0].second && mn>=mx)) {
			ans=max(ans,j+1);
			//cout<<mn<<" "<<mn<<"\n";
			//cout<<i<<" "<<j<<"\n";
		}
	}
	
	mx=s;
		
	for(int i=0;i<m;i++) {
		mn-=(a[0].first)[i];
		if((a[0].second>a[1].second && mn>mx) || (a[1].second>a[0].second && mn>=mx)) {
			ans=max(ans,i+1);
		}
		for(int j=0;j<m;j++) {
			mx+=k-(a[1].first)[j];
			if((a[0].second>a[1].second && mn>mx) || (a[1].second>a[0].second && mn>=mx)) {
				ans=max(ans,i+1+j+1);
				//cout<<mn<<" "<<mn<<"\n";
				//cout<<i<<" "<<j<<"\n";
			}
		}
		mx=s;
	}
	cout<<n*m-ans;
	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...