제출 #1169019

#제출 시각아이디문제언어결과실행 시간메모리
1169019anteknneJelly Flavours (IOI20_jelly)C++20
35 / 100
174 ms191016 KiB
#include "jelly.h"
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 2000;
const int MAXN2 = 200;
const int MAXX2 = 500;
int dp[MAXN2 + 1][MAXX2 + 1][MAXX2 + 1];

int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) {
	int n = int(a.size());

    if (n <= MAXN2 && x <= MAXX2 && y <= MAXX2) {
        int wyn = 0;
        for (int i = 1; i <= n; i ++) {
            for (int j = 0; j <= x; j ++) {
                for (int k = 0; k <= y; k ++) {
                    dp[i][j][k] = dp[i - 1][j][k];
                    if (j >= a[i - 1]) {
                        dp[i][j][k] = max(dp[i - 1][j - a[i - 1]][k] + 1, dp[i][j][k]);
                    }
                    if (k >= b[i - 1]) {
                        dp[i][j][k] = max(dp[i - 1][j][k - b[i - 1]] + 1, dp[i][j][k]);
                    }
                    wyn = max(wyn, dp[i][j][k]);
                }
            }
        }

        return wyn;
    }

    if (y == 0) {
        sort(a.begin(), a.end());

        int wyn = 0;
        for (int i = 0; i < n; i ++) {
            if (x >= a[i]) {
                x -= a[i];
                wyn ++;
            }
        }

        return wyn;
    }

	return n;
}
/*
int main () {
    cout << find_maximum_unique(4, 2, {1, 3, 1}, {3, 3, 2});
}
*/
#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...