Submission #1246290

#TimeUsernameProblemLanguageResultExecution timeMemory
1246290slivajanUplifting Excursion (BOI22_vault)C++20
0 / 100
5093 ms16244 KiB
#include <bits/stdc++.h> using namespace std; using un = long long; using vuc = vector<un>; using vol = vector<bool>; using puc = pair<un, un>; #define REP(i, a, b) for (un i = (un)a; i < (un)b; i++) #define FEAC(i, a) for (auto&& i : a) #define vec vector #define ALL(x) (x).begin(), (x).end() constexpr un mINF = INT64_MIN; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); un M, L; cin >> M >> L; vuc A(2*M+1); FEAC(a, A) cin >> a; un MAX = 505000; // un MAX = 10; if ((L > MAX) or (L < -MAX)){ cout << "impossible\n"; return 0; } vuc DP(2*MAX+1, mINF); DP[MAX+0] = 0; vuc newDP; REP(v, -M, M+1){ if (A[M+v] == 0) continue; newDP = DP; REP(i, 0, DP.size()){ REP(x, 1, A[M+v]+1){ if ((i + x*v) >= DP.size()) break; if ((i + x*v) < 0) break; newDP[i + x*v] = max(newDP[i + x*v], DP[i]+x); } } DP = move(newDP); } if (DP[MAX+L] < 0) cout << "impossible\n"; else cout << DP[MAX+L] << "\n"; }
#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...
#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...