답안 #320453

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
320453 2020-11-08T19:30:45 Z Marlov Kitchen (BOI19_kitchen) C++14
30 / 100
84 ms 111456 KB
/*
Code by @marlov       
*/
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <string>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <utility>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <queue>
#include <iterator>
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
 
#define maxV 305
#define INF 1000000000
 
int N,M,K;
int A[maxV];
int B[maxV];
int dp[maxV][maxV*maxV];
int mina=maxV;
int At=0;
int Bt=0;
int result=INF;
//dp values and value after chef i works on it
int main() {
	ios_base::sync_with_stdio(0); cin.tie(0);
	cin>>N>>M>>K;
	for(int i=0;i<maxV;i++){
		fill(dp[i],dp[i]+(maxV*maxV),-1);
	}
	for(int i=1;i<=N;i++){
		cin>>A[i];
		mina=min(mina,A[i]);
		At+=A[i];
	}
	if(mina<K){
		cout<<"Impossible"<<'\n';
		return 0;
	}
	for(int i=1;i<=M;i++){
		cin>>B[i];
		Bt+=B[i];
	}
	dp[0][0]=0;
	for(int i=1;i<=M;i++){
		for(int j=0;j<B[i];j++){
			dp[i][j]=dp[i-1][j];
		}
		for(int j=B[i];j<=Bt;j++){
			dp[i][j]=max(dp[i-1][j],dp[i-1][j-B[i]]+min(B[i],N));
			//cout<<i<<" "<<j<<" : "<<dp[i][j]<<'\n';
		}
	}
	for(int i=At;i<=Bt;i++){
		if(dp[M][i]>=N*K){
			result=min(result,i-At);
		}
	}

	if(result==INF){
		cout<<"Impossible"<<'\n';
		return 0;
	}else{
		cout<<result<<'\n';
	}

    return 0;
}
 
/* stuff you should look for
	* int overflow, array bounds
	* special cases (n=1,n=0?)
	* do smth instead of nothing and stay organized
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 65 ms 111332 KB Output is correct
2 Correct 66 ms 111332 KB Output is correct
3 Correct 65 ms 111336 KB Output is correct
4 Correct 65 ms 111332 KB Output is correct
5 Correct 67 ms 111396 KB Output is correct
6 Correct 64 ms 111332 KB Output is correct
7 Correct 65 ms 111332 KB Output is correct
8 Correct 65 ms 111328 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 65 ms 111332 KB Output is correct
2 Correct 66 ms 111332 KB Output is correct
3 Correct 65 ms 111336 KB Output is correct
4 Correct 65 ms 111332 KB Output is correct
5 Correct 67 ms 111396 KB Output is correct
6 Correct 64 ms 111332 KB Output is correct
7 Correct 65 ms 111332 KB Output is correct
8 Correct 65 ms 111328 KB Output is correct
9 Correct 64 ms 111332 KB Output is correct
10 Correct 66 ms 111332 KB Output is correct
11 Correct 67 ms 111332 KB Output is correct
12 Correct 66 ms 111332 KB Output is correct
13 Incorrect 65 ms 111332 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 84 ms 111332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 69 ms 111352 KB Output is correct
2 Correct 71 ms 111456 KB Output is correct
3 Correct 66 ms 111452 KB Output is correct
4 Correct 67 ms 111332 KB Output is correct
5 Correct 65 ms 111332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 65 ms 111332 KB Output is correct
2 Correct 66 ms 111332 KB Output is correct
3 Correct 65 ms 111336 KB Output is correct
4 Correct 65 ms 111332 KB Output is correct
5 Correct 67 ms 111396 KB Output is correct
6 Correct 64 ms 111332 KB Output is correct
7 Correct 65 ms 111332 KB Output is correct
8 Correct 65 ms 111328 KB Output is correct
9 Correct 64 ms 111332 KB Output is correct
10 Correct 66 ms 111332 KB Output is correct
11 Correct 67 ms 111332 KB Output is correct
12 Correct 66 ms 111332 KB Output is correct
13 Incorrect 65 ms 111332 KB Output isn't correct