Submission #1169457

#TimeUsernameProblemLanguageResultExecution timeMemory
1169457Szymon_PilipczukJelly Flavours (IOI20_jelly)C++20
100 / 100
83 ms77384 KiB
#include <bits/stdc++.h>
using namespace std;
int find_maximum_unique(int x,int y,vector<int> a,vector<int> b)
{
    int n = a.size();
    vector<pair<int,int>> mc(n);
    for(int i = 0;i<n;i++)
    {
        mc[i] = {a[i],b[i]};
    }
    sort(mc.begin(),mc.end());
    int dp[n][x+1];
    for(int i = 0;i<n;i++)
    {
        for(int j = 0;j<=x;j++)
        {
            if(i == 0)
            {
                if(j >= mc[i].first)
                {
                    dp[i][j] = 0;
                }
                else
                {
                    dp[i][j] = mc[i].second;
                }
            }
            else
            {
                dp[i][j] = dp[i-1][j] + mc[i].second;
                if(j >= mc[i].first)
                {
                    dp[i][j] = min(dp[i][j],dp[i-1][j-mc[i].first]);
                }
            }
        }
    }
    int ans = 0;
    for(int i =0 ;i<n;i++)
    {
        int cy = y;
        cy -= dp[i][x];
        if(cy >= 0)
        {
            vector<int> r;
            for(int j = i+1;j<n;j++)
            {
                r.push_back(mc[j].second);
            }
            sort(r.begin(),r.end());
            int cans = 0;
            for(int j = 0;j<r.size();j++)
            {
                if(cy >= r[j])
                {
                    cy-=r[j];
                    cans++;
                }
            }
            ans = max(ans,cans+i+1);
        }
    }
    int cy = y;
    vector<int> r;
    for(int j = 0;j<n;j++)
    {
        r.push_back(mc[j].second);
    }
    sort(r.begin(),r.end());
    int cans = 0;
    for(int j = 0;j<r.size();j++)
    {
        if(cy >= r[j])
        {
            cy-=r[j];
            cans++;
        }
    }
    ans = max(ans,cans);
    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...