Submission #402648

#TimeUsernameProblemLanguageResultExecution timeMemory
402648Nicholas_PatrickKitchen (BOI19_kitchen)C++17
100 / 100
891 ms13544 KiB
#include <cstdio>
#include <queue>
#include <bitset>
#include <algorithm>
using namespace std;

const int maxall=300;
const int maxrow=maxall*maxall+1;
int main(){
	int n, m, k;
	scanf("%d%d%d", &n, &m, &k);
	vector<int> a(n), b(m);
	int A=0;
	for(int& i: a){
		scanf("%d", &i);
		A+=i;
	}
	for(int& i: b)
		scanf("%d", &i);
	if(*min_element(a.begin(), a.end())<k){
		printf("Impossible\n");
		return 0;
	}
	sort(b.begin(), b.end());
	auto it=upper_bound(b.begin(), b.end(), n);
	bitset<maxrow> smallsums;
	smallsums[0]=true;
	for(auto i=b.begin(); i!=it; i++)
		smallsums|=smallsums<<*i;
	bitset<maxrow*(maxall+1)> mask;
	for(int i=0; i<maxrow; i++)
		mask[i+maxrow*min(i/n, k)]=smallsums[i];
	//bottleneck
	for(auto i=it; i!=b.end(); i++)
		mask|=mask<<(maxrow+*i)|mask<<*i;
	for(int i=A; i<maxrow; i++){
		if(mask[i+k*maxrow]){
			printf("%d\n", i-A);
			return 0;
		}
	}
	printf("Impossible\n");
}

Compilation message (stderr)

kitchen.cpp: In function 'int main()':
kitchen.cpp:11:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |  scanf("%d%d%d", &n, &m, &k);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~
kitchen.cpp:15:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |   scanf("%d", &i);
      |   ~~~~~^~~~~~~~~~
kitchen.cpp:19:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |   scanf("%d", &i);
      |   ~~~~~^~~~~~~~~~
#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...