Submission #1208539

#TimeUsernameProblemLanguageResultExecution timeMemory
1208539aaron_dcoderTeam Contest (JOI22_team)C++20
100 / 100
71 ms11020 KiB
#define NDEBUG

#ifdef NDEBUG
#define dbg(TXTMSG) if constexpr (false) cerr << "lol"
#define dbgv(VARN) ((void)0)
#define dbgfor(COND) if constexpr (false) for (COND)

#else
#define _GLIBCXX_DEBUG 1
#define _GLIBCXX_DEBUG_PEDANTIC 1
#pragma GCC optimize("trapv")
#define dbg(TXTMSG) cerr << "\n" << TXTMSG
#define dbgv(VARN) cerr << "\n" << #VARN << " = "<< VARN << ", line " << __LINE__ << "\n"
#define dbgfor(COND) for (COND)

#endif

#include <bits/stdc++.h>

using namespace std;
using ll = long long; 
using pll = pair<ll,ll>;
#define e0 first
#define e1 second
constexpr ll INFTY = 2e18;

struct skill
{
	ll x;
	ll y;
	ll z;
};

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

	ll N;
	cin >> N;

	vector<pll> X(N);
	vector<pll> Y(N);
	vector<pll> Z(N);
	vector<skill> S(N);

	for (ll i = 0; i < N; ++i)
	{
		cin >> X[i].e0 >> Y[i].e0 >> Z[i].e0;
		S[i].x = X[i].e0;
		S[i].y = Y[i].e0;
		S[i].z = Z[i].e0;
		X[i].e1=i;
		Y[i].e1=i;
		Z[i].e1=i;
	}

	vector<bool> used(N,false);

	sort(X.rbegin(),X.rend());
	sort(Y.rbegin(),Y.rend());
	sort(Z.rbegin(),Z.rend());

	ll xidx=0;
	ll yidx=0;
	ll zidx=0;

	while (xidx < N && yidx < N && zidx < N)
	{
		// xidx checking
		if (S[X[xidx].e1].y==Y[yidx].e0  || S[X[xidx].e1].z==Z[zidx].e0)
		{
			used[X[xidx].e1]=true;
		}
		else if (S[Y[yidx].e1].x==X[xidx].e0  || S[Y[yidx].e1].z==Z[zidx].e0)
		{
			used[Y[yidx].e1]=true;
		}
		else if (S[Z[zidx].e1].x==X[xidx].e0  || S[Z[zidx].e1].y==Y[yidx].e0)
		{
			used[Z[zidx].e1]=true;
		}
		else
		{
			cout << (X[xidx].e0+Y[yidx].e0+Z[zidx].e0);
			return EXIT_SUCCESS;
		}

		while (xidx < N && used[X[xidx].e1]) xidx++;
		while (yidx < N && used[Y[yidx].e1]) yidx++;
		while (zidx < N && used[Z[zidx].e1]) zidx++;
	}

	cout << "-1";
	return EXIT_SUCCESS;
}
#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...