149542025-02-10 08:18:39sarminLegtöbbször szomszédok (75 pont)cpp17Elfogadva 75/7518ms956 KiB
// Legtöbbször szomszédok
// Created by Armin on 2/8/2025.

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pp = pair<int, int>;
using vi = vector<int>;
using v = vector<int>;
using vvi = vector<vector<int>>;
using vpi = vector<pair<int, int>>;
using vl = vector<ll>;
constexpr ll MOD = 1e9 + 7;

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

    int n, m; cin >> n >> m;
    map<int, int> elott, utan;
    vpi v;
	set<int> volt;
	int en = 0;
    for (int i = 0; i < m; i++) {
    	int x; cin >> x;
    	if (i + 1 == m) en = x;
    	if (volt.find(x) != volt.end()) continue;
    	v.push_back({x, i + 1});
    	volt.insert(x);
    }
	sort(v.begin(), v.end());
	int maxelott = -1, maxekul = INT_MAX, maxutan = -1, maxutkul = INT_MAX;
	for (int i = 0; i < v.size(); i++) {
		if (v[i].first == en) {
			if (i - 1 >= 0) {
				maxutan = v[i - 1].second;
				maxutkul = abs(v[i].first - v[i - 1].first);
				utan[maxutan]++;
			}
			if (i + 1 < v.size()) {
				maxelott = v[i + 1].second;
				maxekul = abs(v[i].first - v[i + 1].first);
				elott[maxelott]++;
			}
			break;
		}
	}
	for (int i = m; i < n; i++) {
		int x; cin >> x;
		if (x > en && abs(en - x) < maxekul) {
			maxelott = i + 1;
			maxekul = abs(en - x);
			elott[maxelott]++;
		} else if (maxelott > 0) {
			elott[maxelott]++;
		}
		if (x < en && abs(en - x) < maxutkul) {
			maxutan = i + 1;
			maxutkul = abs(en - x);
			utan[maxutan]++;
		} else if (maxutan > 0) {
			utan[maxutan]++;
		}
		// cout <<"Map: " << "\n";
		// for (auto& y : utan) {
		// 	cout << y.first <<" ";
		// }
		// cout << "\n--\n";
	}

	// cout <<"Map: " << "\n";
	// for (auto& x : utan) {
	// 	cout << x.first <<" ";
	// }
	// cout << "\n--\n";

	int mx1 = 0, val1 = -1;
	for (auto& [ki, mi] : utan) {
		if (mi > mx1) {
			mx1 = mi;
			val1 = ki;
		}
	}

	int mx2 = 0, val2 = -1;
	for (auto& [ki, mi] : elott) {
		if (mi > mx2) {
			mx2 = mi;
			val2 = ki;
		}
	}
	if (val2 == -1) {
		cout << "-1\n";
	} else {
		cout << val2 << " " << mx2 << "\n";
	}

	if (val1 == -1) {
		cout << "-1\n";
	} else {
		cout << val1 << " " << mx1 << "\n";
	}
    
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base75/75
1Elfogadva0/01ms508 KiB
2Elfogadva0/010ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms328 KiB
5Elfogadva4/41ms316 KiB
6Elfogadva4/41ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva4/41ms316 KiB
9Elfogadva4/44ms564 KiB
10Elfogadva4/42ms316 KiB
11Elfogadva4/42ms428 KiB
12Elfogadva4/43ms424 KiB
13Elfogadva4/43ms316 KiB
14Elfogadva4/43ms316 KiB
15Elfogadva4/43ms428 KiB
16Elfogadva4/44ms316 KiB
17Elfogadva4/44ms428 KiB
18Elfogadva4/46ms428 KiB
19Elfogadva4/410ms544 KiB
20Elfogadva4/49ms424 KiB
21Elfogadva4/49ms316 KiB
22Elfogadva4/418ms956 KiB