제출 #1355065

#제출 시각아이디문제언어결과실행 시간메모리
1355065d4n13lGrid Coloring (JOI25_ho_t1)C++20
100 / 100
272 ms56776 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

void solve() {
    int n;
    cin >> n;
    vector <int> a(n), b(n);
    map <int, int> ans;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        ans[a[i]]++;
    }
    for (int i = 0; i < n; i++) {
        cin >> b[i];
        ans[b[i]]++;
    }
    ans[a[0]]--;
    vector <int> onea(n), oneb(n);
    map <int, int> numa, numb;
    for (int i = 1; i < n; i++) {
        onea[i]=max(onea[i-1], a[i]);
        numa[onea[i]]++;
        oneb[i]=max(oneb[i-1], b[i]);
        numb[oneb[i]]++;
    }
    for (int i = 1; i < n; i++) {
        auto it = upper_bound(oneb.begin(), oneb.end(), onea[i]);
        int id = it-oneb.begin();
        id--;
        ans[onea[i]]+=id;
    }
    for (int i = 1; i < n; i++) {
        auto it = lower_bound(onea.begin(), onea.end(), oneb[i]);
        int id = it-onea.begin();
        id--;
        ans[oneb[i]]+=id;
    }
    int id = 0, big = 0;
    for (auto u: ans) {
        if (u.second>big) {
            big = u.second;
            id = u.first;
        } else if (u.second==big and u.first>id) {
            big = u.second;
            id = u.first;
        }
    }
    cout << id << " " << big << endl;
}

signed main() {
    int t = 1;
    while (t--) {
        solve();
    }
}
#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...