제출 #1169445

#제출 시각아이디문제언어결과실행 시간메모리
1169445owieczkaJelly Flavours (IOI20_jelly)C++20
10 / 100
54 ms78664 KiB
#include "jelly.h"
#include <bits/stdc++.h>
using namespace std;
int dp[2'002][10'010];
pair<int, int> tab[2'002];
pair<int, int> tb[2'002];


int find_maximum_unique(int x, int y, std::vector<int> a, std::vector<int> b) {
	int n = a.size();
	for (int i = 0; i < n; i++)
	{
		tab[i+1] = {a[i], b[i]};
		tb[i+1] = {b[i], i+1};
	}
	sort(tab+1, tab + n+1);
	sort(tb+1,  tb+ n + 1);
	int ans = 0;
	for (int i = 1; i <= n; i++)
	{
		int m = INT_MAX;
		for (int a = 0; a <= x; a++)
		{
			dp[i][a] = dp[i-1][a] + tab[i].second;
			if (a >= tab[i].first) dp[i][a] = min(dp[i][a], dp[i-1][a-tab[i].first]);
			m = min(dp[i][a], m);
		}
		int left = y - m;
		m = i;
		if (left < 0)continue;
		for (int j = 1; j <= n; j++)
		{
			if (left < tb[j].first)break;
			if (tb[j].second > i)
			{
				left -= tb[i].first;
				m++;
			}
		}
		ans = max(m, 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...