제출 #604376

#제출 시각아이디문제언어결과실행 시간메모리
604376PlurmUplifting Excursion (BOI22_vault)C++11
0 / 100
5032 ms12152 KiB
#include <bits/stdc++.h> using namespace std; class negarr { private: int data[505000 * 2 + 1]; public: negarr() { memset(data, 0, sizeof(data)); } void reset() { fill(data, data + 505000 * 2 + 1, -1000000000); } int &operator[](int i) { return data[i + 505000]; } }; negarr a, knapsack; int main() { int m; long long l; cin >> m >> l; if (l > 505000 || l < -505000) { printf("impossible\n"); return 0; } knapsack.reset(); knapsack[0] = 0; for (int i = -m; i <= m; i++) { cin >> a[i]; for (int rep = 0; rep < a[i]; rep++) { negarr tmp; tmp.reset(); for (int id = -505000; id <= 505000; id++) { if (-505000 <= id + i && id + i <= 505000) tmp[id + i] = max(tmp[id + i], knapsack[id] + 1); } for (int id = -505000; id <= 505000; id++) { knapsack[id] = max(knapsack[id], tmp[id]); } } } if (knapsack[l] >= 0) printf("%d\n", knapsack[l]); else printf("impossible\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...