Cod sursă (job #678407)

Utilizator avatar vasia_sirioja dsdsdarewrewrewdasdas vasia_sirioja IP ascuns
Problemă Canibali (lot liceu) Compilator cpp-32 | 1,01 kb
Rundă Arhiva de probleme Status evaluat
Dată 29 nov. 2022 14:25:49 Scor 15
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

bool cmp(vector<int> a, vector<int> b) {
	int mn1 = a[0], mn2 = b[0];
	for(int i = 1; i < 4; i++) {
		mn1 = min(a[i], mn1);
		mn2 = min(b[i], mn2);
	}
	return mn1 < mn2;
}

const int mxN = 3*1e3+10;

bool vis[mxN];

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	freopen("canibali.in", "r", stdin);
	freopen("canibali.out", "w", stdout);
	int n;
	cin >> n;
	vector<vector<int>> v;
	for(int i = 0; i < n; i++) {
		int a, b, c, d;
		cin >> a >> b >> c >> d;
		vector<int> elem = {a, b, c, d};
		v.push_back(elem);
	}
	sort(v.begin(), v.end(), cmp);
	ll ans = 0;
	for(int i = 0; i < n; i++) {
		int counter = 0;
		for(int j = i-1; j >= 0; j--) {
			if(vis[j]) continue;
			if(counter==2) break;
			int counter1 = 0;
			for(int k = 0; k < 4; k++) {
				if(v[i][k] >= v[j][k]) {
					counter1++;
				}
			}
			if(counter1 == 4) {
				counter++;
				ans++;
				vis[j] = true;
			}
		}
	}
	cout << (n-ans);
}