제출 #1144214

#제출 시각아이디문제언어결과실행 시간메모리
1144214aguss휴가 (IOI14_holiday)C++20
7 / 100
5092 ms6216 KiB
#include"holiday.h" #include <bits/stdc++.h> using namespace std; using ll = long long; #define all(x) x.begin(), x.end() #define dbg(x) cerr << #x << ": " << x << '\n'; vector<ll> arr; vector<vector<ll>> dp; int n; ll ans = 0; ll s; void derecha(int d, int curr, ll sum){ if(d <= 0 or curr >= n){ ans = max(ans, sum); return; } derecha(d - 1, curr + 1, sum); derecha(d - 2, curr + 1, sum + arr[curr]); } void izquierda(int d, int curr, ll sum){ if(d <= 0 or curr < 0){ ans = max(ans, sum); return; } izquierda(d - 1, curr - 1, sum); izquierda(d - 2, curr - 1, sum + arr[curr]); } void izqder(int d, int curr, ll sum){ if(d <= 0 or curr < 0){ ans = max(ans, sum); return; } izqder(d - 1, curr - 1, sum); izqder(d - 2, curr - 1, sum + arr[curr]); derecha(d - abs(s - curr) - 1, s + 1, sum); derecha(d - abs(s - curr) - 2, s + 1, sum + arr[curr]); } void derizq(int d, int curr, ll sum){ if(d <= 0 or curr >= n){ ans = max(ans, sum); return; } derizq(d - 1, curr + 1, sum); derizq(d - 2, curr + 1, sum + arr[curr]); izquierda(d - abs(s - curr) - 1, s - 1, sum); izquierda(d - abs(s - curr) - 2, s - 1, sum + arr[curr]); } long long int findMaxAttraction(int N, int start, int d, int attraction[]) { n = N; s = start; arr.assign(n, 0); copy(attraction, attraction + n, arr.begin()); izqder(d, start, 0); derizq(d, start, 0); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...