Language: C++

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;


int main()
{
	long long N;

	cin >> N;

	static int priority[1010][1010];

	for (long long iN = 0; iN < N; iN++) {
		for (long long iM = 0; iM < N - 1; iM++) {
			int value;
			
			cin >> value;

			priority[iN][value - 1] = (int)iM + 1;
		}
	}

	//! index�̑I�肪���ɏ������Ȃ���΂Ȃ�Ȃ�priority�l
	static int nextPriority[1010];
	for (int i = 0; i < 1010; i++) {
		nextPriority[i] = 1; //!< �ŏ���1�������
	}

	//! indexn�̑I�肪���̓��ΐ���I������
	static bool battld[1010];

	//! ��������priority�l
	int nowPriority = 1;

	//! index��priority�l�̂��������������F�I�萔�����������Ȃ��Ǝ��̎����͂ł��Ȃ��i�H
	int countProc[1010];
	memset(countProc, 0, sizeof(countProc));

	long long day = 0;

	bool able = true;

	while (true) {
		day++;

		bool battle = false;
		memset(battld, 0, sizeof(battld));

		//! ��������p�l�̑ΐ��T�����[�v
		for (long long iN = 0; iN < N; iN++) {
			for (long long iM = 0; iM < N; iM++) {
				if (priority[iN][iM] == nowPriority) {
					//! �����p���`�F�b�N�����ΐ킩�`�F�b�N
					if (priority[iM][iN] == nextPriority[iM] && battld[iM] == false) {
						//! ok�̏ꍇ�͑ΐ�
						priority[iN][iM] = 0;
						priority[iM][iN] = 0;
						battld[iN] = true;
						battld[iM] = true;
						
						countProc[nextPriority[iN]]++;
						countProc[nextPriority[iM]]++;

						nextPriority[iN]++;
						nextPriority[iM]++;

						battle = true;
						break; //! iN�̑I��͂��̓������ΐ킵�Ȃ�
					}
				}
			}
		}

		if (countProc[nowPriority] == N) {
			//! ����p�l�ֈڍs
			nowPriority++;

			//! �I������
			if (nowPriority >= N) {
				break;
			}
		}

		//! ���̓��ΐ�Ȃ��̏ꍇ�͉����s�Ɣ���
		if (battle == false) {
			able = false;
			break;
		}
	}

	if (able) {
		cout << day << endl;
	}
	else {
		cout << -1 << endl;
	}
}


//int main()
//{
//	long long N;
//
//	cin >> N;
//
//	long long sum = 0;
//
//	for (long long iN = 1; iN <= N - 1; iN++) {
//		sum += iN;
//	}
//
//	cout << sum << endl;
//}

//int main()
//{
//	long long N;
//
//	cin >> N;
//	
//	vector<long long> H;
//
//	for (long long iN = 0; iN < N; iN++)
//	{
//		long long val;
//
//		cin >> val;
//		H.push_back(val);
//	}
//
//	long long max_down = 0;
//
//	//TLE
//	//for (long long iN = 0; iN < N; iN++)
//	//{
//	//	long long down = 0;
//
//	//	for (long long iR = iN; iR < N - 1; iR++)
//	//	{
//	//		if (H[iR] >= H[iR + 1]) {
//	//			down++;
//	//		}
//	//		else {
//	//			break;
//	//		}
//	//	}
//
//	//	max_down = std::max(down, max_down);
//	//}
//
//	long long now = 100000000001;
//	long long up = 0;
//	for (long long iN = N - 1; iN >= 0; iN--) {
//		if (H[iN] >= now) {
//			up++;
//		}
//		else {
//			max_down = std::max(up, max_down);
//			up = 0;
//		}
//
//		now = H[iN];
//	}
//
//	max_down = std::max(up, max_down);
//
//	cout << max_down << endl;
//}

//int main()
//{
//	int A, B;
//
//	cin >> A >> B;
//
//	long long socket = 1;
//	long long count = 0;
//
//	while (socket < B)
//	{
//		socket = socket - 1 + A;
//		count++;
//	}
//
//	cout << count << endl;
//}

//int main()
//{
//	string S, T;
//
//	cin >> S >> T;
//
//	int hit = 0;
//
//	for (long long iS = 0; iS < 3; iS++)
//	{
//		if (S[iS] == T[iS])
//		{
//			hit++;
//		}
//	}
//
//	cout << hit << endl;
//}


Compiler output:
a.cc: In function 'int main()':
a.cc:40:9: error: 'memset' was not declared in this scope
   40 |         memset(countProc, 0, sizeof(countProc));
      |         ^~~~~~
a.cc:5:1: note: 'memset' is defined in header '<cstring>'; this is probably fixable by adding '#include <cstring>'
    4 | #include <algorithm>
  +++ |+#include <cstring>
    5 | using namespace std;