제출 #1246377

#제출 시각아이디문제언어결과실행 시간메모리
1246377trideserUplifting Excursion (BOI22_vault)C++20
5 / 100
5092 ms19856 KiB
#include <bits/stdc++.h> using namespace std; int main() { int M, L; cin >> M >> L; int zindex = 500000; vector<int> maxcount(1000001, -1); vector<int> pieces(2 * M + 1); if(L + zindex < 0 || L + zindex >= 1000001) { cout << "impossible\n"; return 0; } maxcount[zindex] = 0; for(int i = 0; i < 2 * M + 1; i++) { cin >> pieces[i]; } vector<int> valid = {zindex}; for(int i = -M, ix = 0; i <= M; i++, ix++) { vector<int> newmaxcount = maxcount; vector<int> newvalid = valid; //for(int j = 0; j < maxcount.size(); j++) { for(int j : valid) { if(maxcount[j] == -1) continue; for(int k = 1; k <= pieces[ix]; k++) { if(newmaxcount[j + k * i] == -1) newvalid.push_back(j + k * i); newmaxcount[j + k * i] = max(newmaxcount[j + k * i], maxcount[j] + k); } } valid = newvalid; maxcount = newmaxcount; } if(maxcount[L + zindex] == -1) cout << "impossible\n"; else cout << maxcount[L + zindex] << "\n"; return 0; }
#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...