제출 #476400

#제출 시각아이디문제언어결과실행 시간메모리
476400starplatJelly Flavours (IOI20_jelly)C++14
33 / 100
82 ms1228 KiB
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
pair<int,int> v[2005],dp[100005];
pair<int,int> cmp(pair<int,int> a,pair<int,int> b)
{
	if (a.f==-1) return b;
	if (a.f<b.f) return b;
	if (a.f==b.f&&a.s>b.s) return b;
	return a;
}
int find_maximum_unique(int x,int y,vector<int> a, vector<int> b)
{
	int n=a.size();
	int ans=0;
	pair<int,int> v[2005],dp[100005];
	for (int i=1;i<=n;i++){
		v[i]={a[i-1],b[i-1]};
	}
	for (int i=1;i<=x;i++) dp[i]={-1,-1};
	dp[1]={0,0};
	sort(v+1,v+1+n);
	for (int i=1;i<=n;i++){
		for (int j=x;j>=0;j--){
			if (dp[j].f==-1) continue;
			if (j+v[i].f<=x){
				dp[j+v[i].f]=cmp(dp[j+v[i].f],{dp[j].f+1,dp[j].s});
			}
			if (dp[j].s+v[i].s<=y){
				dp[j]=cmp(dp[j],{dp[j].f+1,dp[j].s+v[i].s});
			}
		}
	}
	for (int i=0;i<=x;i++){
		if (dp[i].f!=-1&&dp[i].s<=y) ans=max(dp[i].f,ans);
	}
	return ans;
}
#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...