Submission #1244250

#TimeUsernameProblemLanguageResultExecution timeMemory
1244250nvujicaTeam Contest (JOI22_team)C++20
100 / 100
91 ms4072 KiB
#include <bits/stdc++.h>

#define ll long long
#define fi first
#define se second

using namespace std;

const int maxn = 1.5e5 + 10;

int n;
//int x[maxn];
//int y[maxn];
//int z[maxn];
map <vector <int>, int> mp;
vector<int> v[3];
int ar[maxn][3];

bool cmp0(int i, int j){
	return ar[i][0] < ar[j][0];
}

bool cmp1(int i, int j){
	return ar[i][1] < ar[j][1];
}

bool cmp2(int i, int j){
	return ar[i][2] < ar[j][2];
}

int veci(int a, int b, int c){
	int cnt = 0;
		
	for(int i = 0; i < 3; i++){
		cnt += (ar[a][i] >= ar[b][i] && ar[a][i] >= ar[c][i]);
	}

	return cnt;
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	cin >> n;
	
	for(int i = 0; i < n; i++){
		for(int j = 0; j < 3; j++){
			cin >> ar[i][j];
			v[j].push_back(i);
		}
	}
	
	sort(v[0].begin(), v[0].end(), cmp0);
	sort(v[1].begin(), v[1].end(), cmp1);
	sort(v[2].begin(), v[2].end(), cmp2);
	
//	for(int i = 0; i < n; i++){
//		cout << v[0][i] << ' ';
//	}
//	cout << endl;
	
	int ans = 0;
	
//	cout << endl;
	
	while(!v[0].empty() && !v[1].empty() && !v[2].empty()){
		int a = v[0].back();
		int b = v[1].back();
		int c = v[2].back();
		
		int ca = veci(a, b, c), cb = veci(b, a, c), cc = veci(c, a, b);
		
//		cout << a << ' ' << b << ' ' << c << endl;
		
		if(ca > 1){
			v[0].pop_back();
			continue;
		}
		
		if(cb > 1){
			v[1].pop_back();
			continue;
		}
		
		if(cc > 1){
			v[2].pop_back();
			continue;
		}
		
		ans = ar[a][0] + ar[b][1] + ar[c][2];
		
		break;
	}
	
	if(ans == 0) ans--;
	cout << 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...