제출 #1369693

#제출 시각아이디문제언어결과실행 시간메모리
1369693gelastropodGrid Coloring (JOI25_ho_t1)C++20
100 / 100
161 ms18056 KiB
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
	int N, x; cin >> N;
	vector<int> A, B, a;
	for (int i = 0; i < N; i++) {
		cin >> x;
		A.push_back(x);
		a.push_back(x);
	}
	for (int i = 0; i < N; i++) {
		cin >> x;
		B.push_back(x);
		a.push_back(x);
	}
	sort(a.begin(), a.end());
	a.erase(unique(a.begin(), a.end()), a.end());
	for (int i = 0; i < N; i++) {
		A[i] = lower_bound(a.begin(), a.end(), A[i]) - a.begin();
		B[i] = lower_bound(a.begin(), a.end(), B[i]) - a.begin();
	}
	vector<pair<int, int>> firstocc(a.size(), pair<int, int>(INT_MAX, INT_MAX));
	vector<int> occ(a.size(), 0);
	for (int i = N - 1; i > 0; i--) {
		firstocc[A[i]].first = i;
		firstocc[B[i]].second = i;
		occ[A[i]]++, occ[B[i]]++;
	}
	occ[A[0]]++;
	int mina = N - 1, minb = N - 1;
	for (int i = a.size() - 1; i >= 0; i--) {
		int nmina = min(mina, firstocc[i].first - 1), nminb = min(minb, firstocc[i].second - 1);
		occ[i] += (mina * minb) - (nmina * nminb);
		mina = nmina, minb = nminb;
	}
	int cmax = 0, cind = 0;
	for (int i = 0; i < a.size(); i++) if (occ[i] >= cmax) cmax = occ[i], cind = i;
	cout << a[cind] << ' ' << cmax << '\n';
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…