답안 #921115

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
921115 2024-02-03T10:26:30 Z shoryu386 Kitchen (BOI19_kitchen) C++17
0 / 100
35 ms 10004 KB
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
 
main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	
	int n, m, k; cin >> n >> m >> k;
	
	int buckets[n], balls[m];
	
	for (int x = 0; x < n; x++) cin >> buckets[x];
	for (int x = 0; x < m; x++) cin >> balls[x];
	
	#define IMP cout << "Impossible"; return 0;
	
	bool dead = false;
	for (int x = 0; x < n; x++){
		if (buckets[x] < k){
			dead = true;
		}
	}
	if (dead) {IMP;}
	
	int bucketsum = 0;
	for (int x = 0; x < n; x++){
		bucketsum += buckets[x];
	}
	
	
	#define BSMAX 100000
	bitset<BSMAX> hmm[n*k+1];
	
	hmm[n*k][0] = 1;
	sort(balls, balls+m, greater<int>());
	
	int sum = 0, ssum[m];
	for (int x = m-1; x > -1; x--){
		sum += balls[x];
		ssum[x] = sum;
	}
	
	sum = 0; int psum[m];
	for (int x = 0; x < n; x++){
		sum += balls[x];
		psum[x] = sum;
	}
	
	for (int x = 0; x < m; x++){
		for (int z = psum[x]; z <= min(n*k, ssum[x]); z++){
			hmm[max(0LL, z - min(balls[x], n))] |= (hmm[z] << balls[x]);
		}
	}
	int ans = -1;
	for (int x = bucketsum; x < BSMAX; x++){
		if (hmm[0][x]){
			ans = x-bucketsum;
			break;
		}
	}
		
	if (ans == -1) cout << "Impossible";
	else cout << ans;
	
}

Compilation message

kitchen.cpp:6:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
    6 | main(){
      | ^~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 3932 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 35 ms 10004 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -