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 |
|
|
| 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 |