제출 #1118187

#제출 시각아이디문제언어결과실행 시간메모리
1118187hpheheBodyguard (JOI21_bodyguard)C++17
0 / 100
1734 ms1375560 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef vector<int> vi; typedef vector<ll> vll; #define FOR(i, a) for (int i=0; i<(a); i++) #define all(x) x.begin(), x.end() #define gcd __gcd #define pll pair<ll, ll> #define pii pair<int, int> #define fi first #define se second //const int dr[4] = {-1, 0, 1, 0}, dc[4] = {0, 1, 0, -1}; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); const int N = 3005; struct motor{ int t, a, b, c; } xe[N]; int n, q; void sub1(){ int bound1 = 12004, bound2 = 6004; vector<vll> dp(bound1 + 5, vll(bound2 + 5, -1)); vector<vi> best(bound1 + 5, vi(bound2 + 5)); for(int i = 1; i <= n; ++i){ int t = xe[i].t, a = xe[i].a, b = xe[i].b, c = xe[i].c; t *= 2, a *= 2, b *= 2; c /= 2; if(a <= b){ for(int x = a; x < b; ++x){ best[t][x] = max(best[t][x], c); ++t; } } else{ for(int x = a - 1; x >= b; --x){ best[t][x] = max(best[t][x], c); ++t; } } } dp[bound1][1] = 0; for(int t = bound1 - 1; t >= 0; --t){ for(int x = 1; x <= bound2; ++x){ ll &f = dp[t][x]; if(dp[t + 1][x] != -1) f = max(f, dp[t + 1][x]); if(x - 1 >= 0 && dp[t + 1][x - 1] != -1) f = max(f, dp[t + 1][x - 1] + best[t][x - 1]); if(x + 1 <= bound2 && dp[t + 1][x + 1] != -1) f = max(f, dp[t + 1][x + 1] + best[t][x]); } } while(q--){ int p, x; cin >> p >> x; p *= 2, x *= 2; cout << max(0LL, dp[p][x]) << "\n"; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> q; for(int i = 1; i <= n; ++i){ int t, a, b, c; cin >> t >> a >> b >> c; xe[i] = {t, a, b, c}; } sub1(); return 0; } /** 2 2 1 2 1 4 3 1 3 2 1 2 3 3 3 2 3 1 5 2 1 4 1 4 4 2 4 4 2 2 6 3 **/
#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...