Submission #73701311


Source Code Expand

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
struct Problem {
    int id;
    int k;
    long long a;
};
vector<Problem> get_top_unique(const vector<Problem>& candidates, int limit) {
    if (candidates.empty()) return {};
    vector<Problem> sorted = candidates;
    sort(sorted.begin(), sorted.end(), [](const Problem& x, const Problem& y) {
        return x.a > y.a;
    });
    vector<Problem> res;
    set<int> used_genres;
    for (const auto& p : sorted) {
        if (used_genres.find(p.k) == used_genres.end()) {
            res.push_back(p);
            used_genres.insert(p.k);
            if ((int)res.size() == limit) break;
        }
    }
    return res;
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int N;
    if (!(cin >> N)) return 0;
    vector<Problem> probs(N);
    for (int i = 0; i < N; ++i) {
        probs[i].id = i; 
        cin >> probs[i].k >> probs[i].a;
    }
    vector<vector<Problem>> pref(N);
    vector<vector<Problem>> suff(N);
    vector<Problem> current_pool;
    current_pool.reserve(10);
    for (int i = 0; i < N; ++i) {
        current_pool.push_back(probs[i]);
        pref[i] = get_top_unique(current_pool, 4);
    }
    current_pool.clear();
    for (int i = N - 1; i >= 0; --i) {
        current_pool.push_back(probs[i]);
        suff[i] = get_top_unique(current_pool, 5);
    }
    long long max_total_interest = -1;
    for (int i = 0; i < N; ++i) {
        Problem p3 = probs[i];
        if (i == 0) continue;
        const vector<Problem>& left_candidates = pref[i-1];
        if (left_candidates.size() < 2) continue; 
        if (i == N - 1) continue;
        const vector<Problem>& right_candidates = suff[i+1];
        if (right_candidates.size() < 3) continue;
        for (int j = 0; j < (int)right_candidates.size(); ++j) {
            Problem p4 = right_candidates[j];
            if (p3.k == p4.k) continue;
            if (p4.id <= p3.id) continue; 
            long long best_left_sum = -1;
            for (int a = 0; a < (int)left_candidates.size(); ++a) {
                for (int b = a + 1; b < (int)left_candidates.size(); ++b) {
                    const Problem& c1 = left_candidates[a];
                    const Problem& c2 = left_candidates[b];
                    
                    if (c1.k == p3.k || c1.k == p4.k) continue;
                    if (c2.k == p3.k || c2.k == p4.k) continue;
                    
                    long long s = c1.a + c2.a;
                    if (s > best_left_sum) best_left_sum = s;
                }
            }
            if (best_left_sum == -1) continue;
            long long best_right_sum = -1;
            for (int a = 0; a < (int)right_candidates.size(); ++a) {
                for (int b = a + 1; b < (int)right_candidates.size(); ++b) {
                    const Problem& c1 = right_candidates[a];
                    const Problem& c2 = right_candidates[b];
                    if (c1.id <= p4.id || c2.id <= p4.id) continue;
                    
                    if (c1.k == p3.k || c1.k == p4.k) continue;
                    if (c2.k == p3.k || c2.k == p4.k) continue;
                    
                    long long s = c1.a + c2.a;
                    if (s > best_right_sum) best_right_sum = s;
                }
            }
            if (best_right_sum == -1) continue;
            long long total = p3.a + p4.a + best_left_sum + best_right_sum;
            if (total > max_total_interest) {
                max_total_interest = total;
            }
        }
    }

    cout << max_total_interest << endl;

    return 0;
}

Submission Info

Submission Time
Task G - Div. 1 & Div. 2
User stone_shadow
Language C++23 (GCC 15.2.0)
Score 0
Code Size 3750 Byte
Status TLE
Exec Time > 4000 ms
Memory 14920 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 625
Status
AC × 3
AC × 10
TLE × 44
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 02_handmade_00.txt, 02_handmade_01.txt, 02_handmade_02.txt, 02_handmade_03.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3480 KiB
00_sample_01.txt AC 1 ms 3624 KiB
00_sample_02.txt AC 1 ms 3448 KiB
01_random_00.txt AC 1 ms 3540 KiB
01_random_01.txt AC 3 ms 3620 KiB
01_random_02.txt AC 27 ms 4020 KiB
01_random_03.txt AC 9 ms 3932 KiB
01_random_04.txt AC 25 ms 4060 KiB
01_random_05.txt TLE > 4000 ms 10768 KiB
01_random_06.txt TLE > 4000 ms 10780 KiB
01_random_07.txt TLE > 4000 ms 11516 KiB
01_random_08.txt TLE > 4000 ms 11264 KiB
01_random_09.txt TLE > 4000 ms 11724 KiB
01_random_10.txt TLE > 4000 ms 11208 KiB
01_random_11.txt TLE > 4000 ms 11728 KiB
01_random_12.txt TLE > 4000 ms 11152 KiB
01_random_13.txt TLE > 4000 ms 11836 KiB
01_random_14.txt TLE > 4000 ms 11208 KiB
01_random_15.txt TLE > 4000 ms 11864 KiB
01_random_16.txt TLE > 4000 ms 11228 KiB
01_random_17.txt TLE > 4000 ms 11776 KiB
01_random_18.txt TLE > 4000 ms 11228 KiB
01_random_19.txt TLE > 4000 ms 11868 KiB
01_random_20.txt TLE > 4000 ms 11264 KiB
01_random_21.txt TLE > 4000 ms 11844 KiB
01_random_22.txt TLE > 4000 ms 11236 KiB
01_random_23.txt TLE > 4000 ms 11856 KiB
01_random_24.txt TLE > 4000 ms 11084 KiB
01_random_25.txt TLE > 4000 ms 11844 KiB
01_random_26.txt TLE > 4000 ms 11208 KiB
01_random_27.txt TLE > 4000 ms 11724 KiB
01_random_28.txt TLE > 4000 ms 11088 KiB
01_random_29.txt TLE > 4000 ms 11716 KiB
01_random_30.txt TLE > 4000 ms 11204 KiB
01_random_31.txt TLE > 4000 ms 11844 KiB
01_random_32.txt TLE > 4000 ms 11084 KiB
01_random_33.txt TLE > 4000 ms 11864 KiB
01_random_34.txt TLE > 4000 ms 11080 KiB
01_random_35.txt TLE > 4000 ms 11864 KiB
01_random_36.txt TLE > 4000 ms 11228 KiB
01_random_37.txt TLE > 4000 ms 11860 KiB
01_random_38.txt TLE > 4000 ms 11264 KiB
01_random_39.txt TLE > 4000 ms 11832 KiB
01_random_40.txt TLE > 4000 ms 11228 KiB
01_random_41.txt TLE > 4000 ms 11724 KiB
01_random_42.txt TLE > 4000 ms 11188 KiB
01_random_43.txt TLE > 4000 ms 11892 KiB
01_random_44.txt TLE > 4000 ms 11148 KiB
01_random_45.txt TLE > 4000 ms 11904 KiB
01_random_46.txt TLE > 4000 ms 11104 KiB
02_handmade_00.txt AC 2 ms 3540 KiB
02_handmade_01.txt AC 1 ms 3588 KiB
02_handmade_02.txt TLE > 4000 ms 12256 KiB
02_handmade_03.txt TLE > 4000 ms 14920 KiB