답안 #853474

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
853474 2023-09-24T12:04:59 Z vjudge1 Uplifting Excursion (BOI22_vault) C++17
0 / 100
5000 ms 344 KB
#include <bits/stdc++.h>

using namespace std;

#define endl "\n"

void solve(){
	long long M, L; cin >> M >> L;
	vector<int> val(2 * M + 1);
	for(int i = -M; i <= M; i++){
		val[i + M] = i;
	}
	vector<int> A(2 * M + 1);
	for(auto &i : A) cin >> i;
	if(L < 0){
		L *= -1;
		for(int i = 0; i < M; i++){
			swap(A[i], A[2 * M - i]);
		}
	}
	long long max_sum = 0;
	for(int i = M; i <= 2 * M; i++){
		max_sum += val[i] * A[i];
	}
	if(max_sum < L){
		cout << "impossible" << endl;
		return;
	}
	int ans[5051];
	for(int i = 0; i <= max_sum; i++) ans[i] = -1;
	ans[0] = 0;
	for(int i = M + 1; i <= 2 * M; ++i){
		for(int _ = 0; _ < A[i]; ++_){
			for(int w = max_sum; w >= 0; --w){
				if(ans[w] != -1) ans[w + val[i]] = max(ans[w + val[i]], ans[w] + 1);
			}
		}
	}
	for(int i = 0; i < M; --i){
		for(int _ = 0; _ < A[i]; --_){
			for(int w = -val[i]; w <= max_sum; --w){
				if(ans[w] != -1) ans[w + val[i]] = max(ans[w + val[i]], ans[w] + 1);
			}
		}
	}
	if(ans[L] == -1) cout << "impossible" << endl;
	else cout << ans[L] + A[M] << endl;
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	solve();
}
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5073 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5073 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5072 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5072 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5072 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5073 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5072 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5073 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5072 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5073 ms 344 KB Time limit exceeded
2 Halted 0 ms 0 KB -