Submission #2472815
Source Code Expand
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 4005; const ll INF = 1e18; int n, T; ll dp[N][N]; struct ConvexHullTrick { struct line { ll a; ll b; line(ll a = 0, ll b = 0) : a(a), b(b) {} }; bool bad(line l1, line l2, line l3) { // intersection(l1, l3) < intersection(l1, l2) return 1LL * (l1.b - l3.b) * (l2.a - l1.a) < 1LL * (l3.a - l1.a) * (l1.b - l2.b); } vector <line> L; void add(line d) { // d is added according to the increasing order of f[] if (!L.empty() && L.back().a == d.a) { if (L.back().b < d.b) return; // d is not optimal else L.pop_back(); // L.back() is not optimal anymore } while(L.size() >= 2 && bad(L[(int) L.size() - 2], L[(int) L.size() - 1], d)) { L.pop_back(); } L.push_back(d); } ll get(ll x) { // x is increasing if (L.empty()) return INF; while(L.size() >= 2 && 1LL * L[0].a * x + L[0].b >= 1LL * L[1].a * x + L[1].b) { L.erase(L.begin()); } return 1LL * L[0].a * x + L[0].b; } } cvh[N]; struct song { int t; int p; int f; inline bool operator < (const song &other) const { return f < other.f; } } a[N]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> T; for (int i = 1; i <= n; ++i) { cin >> a[i].t >> a[i].p >> a[i].f; } sort(a + 1, a + n + 1); for (int i = 1; i <= n; ++i) { for (int t = 0; t <= T; ++t) { dp[i][t] = -INF; } } for (int i = 1; i <= n; ++i) { for (int t = a[i].t; t <= T; ++t) { if (t == a[i].t) { dp[i][t] = a[i].p; continue; } ll g = cvh[t - a[i].t].get(2LL * a[i].f); if (g == INF) continue; dp[i][t] = -g + a[i].p - 1LL * a[i].f * a[i].f; //cerr << i << ' ' << t << ' ' << dp[i][t] << endl; } for (int t = a[i].t; t <= T; ++t) { if (dp[i][t] != -INF) { cvh[t].add({(ll)-a[i].f, 1LL * a[i].f * a[i].f - dp[i][t]}); } } } ll res = -INF; for (int t = 1; t <= T; ++t) { for (int i = 1; i <= n; ++i) { res = max(res, dp[i][t]); } } printf("%lld\n", res); }
Submission Info
Submission Time | |
---|---|
Task | I - Live Programming |
User | cheater2k |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 2105 Byte |
Status | AC |
Exec Time | 278 ms |
Memory | 125056 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00_sample_00, 00_sample_01, 00_sample_02, 00_sample_03, 00_sample_04, 01_rando_medium_031, 01_rando_medium_035, 01_rando_medium_160, 01_rando_medium_278, 01_rando_medium_337, 01_rando_medium_342, 01_rando_medium_355, 01_rando_medium_452, 01_rando_medium_467, 01_rando_medium_665, 02_rando_large_000, 02_rando_large_013, 02_rando_large_048, 02_rando_large_054, 02_rando_large_083, 02_rando_large_147, 02_rando_large_164, 02_rando_large_227, 02_rando_large_283, 02_rando_large_336, 02_rando_large_368, 05_attack_00, 05_attack_01, 05_attack_mi0803_00, 10_random_small_000, 10_random_small_001, 10_random_small_002, 10_random_small_003, 10_random_small_004, 10_random_small_005, 10_random_small_006, 10_random_small_007, 10_random_small_008, 10_random_small_009, 11_rando_medium_000, 11_rando_medium_001, 11_rando_medium_002, 11_rando_medium_003, 11_rando_medium_004, 11_rando_medium_005, 11_rando_medium_006, 11_rando_medium_007, 11_rando_medium_008, 11_rando_medium_009, 12_random_large_000, 12_random_large_001, 12_random_large_002, 12_random_large_003, 12_random_large_004, 12_random_large_005, 12_random_large_006, 12_random_large_007, 12_random_large_008, 12_random_large_009, 22_shortMusics_Large_000, 22_shortMusics_Large_001, 22_shortMusics_Large_002, 22_shortMusics_Large_003, 22_shortMusics_Large_004, 22_shortMusics_Large_005, 22_shortMusics_Large_006, 22_shortMusics_Large_007, 22_shortMusics_Large_008, 22_shortMusics_Large_009, 41_separate_medium_000, 41_separate_medium_001, 41_separate_medium_002, 41_separate_medium_003, 41_separate_medium_004, 42_separate_large_000, 42_separate_large_001, 42_separate_large_002, 42_separate_large_003, 42_separate_large_004 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00 | AC | 1 ms | 384 KB |
00_sample_01 | AC | 1 ms | 384 KB |
00_sample_02 | AC | 1 ms | 384 KB |
00_sample_03 | AC | 1 ms | 384 KB |
00_sample_04 | AC | 1 ms | 384 KB |
01_rando_medium_031 | AC | 1 ms | 512 KB |
01_rando_medium_035 | AC | 2 ms | 2688 KB |
01_rando_medium_160 | AC | 1 ms | 512 KB |
01_rando_medium_278 | AC | 2 ms | 2688 KB |
01_rando_medium_337 | AC | 1 ms | 512 KB |
01_rando_medium_342 | AC | 2 ms | 2688 KB |
01_rando_medium_355 | AC | 1 ms | 512 KB |
01_rando_medium_452 | AC | 2 ms | 2688 KB |
01_rando_medium_467 | AC | 2 ms | 2688 KB |
01_rando_medium_665 | AC | 1 ms | 640 KB |
02_rando_large_000 | AC | 17 ms | 68224 KB |
02_rando_large_013 | AC | 3 ms | 6784 KB |
02_rando_large_048 | AC | 6 ms | 21248 KB |
02_rando_large_054 | AC | 22 ms | 88832 KB |
02_rando_large_083 | AC | 15 ms | 60032 KB |
02_rando_large_147 | AC | 2 ms | 2688 KB |
02_rando_large_164 | AC | 22 ms | 88832 KB |
02_rando_large_227 | AC | 22 ms | 90880 KB |
02_rando_large_283 | AC | 29 ms | 119552 KB |
02_rando_large_336 | AC | 25 ms | 107264 KB |
02_rando_large_368 | AC | 18 ms | 72320 KB |
05_attack_00 | AC | 2 ms | 2688 KB |
05_attack_01 | AC | 1 ms | 640 KB |
05_attack_mi0803_00 | AC | 1 ms | 384 KB |
10_random_small_000 | AC | 1 ms | 384 KB |
10_random_small_001 | AC | 1 ms | 384 KB |
10_random_small_002 | AC | 1 ms | 384 KB |
10_random_small_003 | AC | 1 ms | 384 KB |
10_random_small_004 | AC | 1 ms | 384 KB |
10_random_small_005 | AC | 1 ms | 384 KB |
10_random_small_006 | AC | 1 ms | 384 KB |
10_random_small_007 | AC | 1 ms | 384 KB |
10_random_small_008 | AC | 1 ms | 384 KB |
10_random_small_009 | AC | 1 ms | 384 KB |
11_rando_medium_000 | AC | 1 ms | 512 KB |
11_rando_medium_001 | AC | 1 ms | 640 KB |
11_rando_medium_002 | AC | 1 ms | 512 KB |
11_rando_medium_003 | AC | 2 ms | 2688 KB |
11_rando_medium_004 | AC | 1 ms | 640 KB |
11_rando_medium_005 | AC | 1 ms | 512 KB |
11_rando_medium_006 | AC | 2 ms | 2688 KB |
11_rando_medium_007 | AC | 1 ms | 384 KB |
11_rando_medium_008 | AC | 2 ms | 2688 KB |
11_rando_medium_009 | AC | 1 ms | 512 KB |
12_random_large_000 | AC | 93 ms | 73856 KB |
12_random_large_001 | AC | 87 ms | 55936 KB |
12_random_large_002 | AC | 222 ms | 117888 KB |
12_random_large_003 | AC | 15 ms | 12664 KB |
12_random_large_004 | AC | 144 ms | 125056 KB |
12_random_large_005 | AC | 36 ms | 28928 KB |
12_random_large_006 | AC | 166 ms | 99072 KB |
12_random_large_007 | AC | 10 ms | 8832 KB |
12_random_large_008 | AC | 73 ms | 41728 KB |
12_random_large_009 | AC | 79 ms | 73600 KB |
22_shortMusics_Large_000 | AC | 155 ms | 78336 KB |
22_shortMusics_Large_001 | AC | 141 ms | 98304 KB |
22_shortMusics_Large_002 | AC | 254 ms | 123520 KB |
22_shortMusics_Large_003 | AC | 278 ms | 119552 KB |
22_shortMusics_Large_004 | AC | 204 ms | 110848 KB |
22_shortMusics_Large_005 | AC | 252 ms | 111360 KB |
22_shortMusics_Large_006 | AC | 174 ms | 76416 KB |
22_shortMusics_Large_007 | AC | 215 ms | 88960 KB |
22_shortMusics_Large_008 | AC | 114 ms | 85888 KB |
22_shortMusics_Large_009 | AC | 151 ms | 74368 KB |
41_separate_medium_000 | AC | 1 ms | 640 KB |
41_separate_medium_001 | AC | 2 ms | 2688 KB |
41_separate_medium_002 | AC | 2 ms | 2688 KB |
41_separate_medium_003 | AC | 2 ms | 2688 KB |
41_separate_medium_004 | AC | 2 ms | 2688 KB |
42_separate_large_000 | AC | 58 ms | 93696 KB |
42_separate_large_001 | AC | 70 ms | 71936 KB |
42_separate_large_002 | AC | 54 ms | 69504 KB |
42_separate_large_003 | AC | 95 ms | 114688 KB |
42_separate_large_004 | AC | 67 ms | 75904 KB |