Submission #1169160

#TimeUsernameProblemLanguageResultExecution timeMemory
11691604QT0RJelly Flavours (IOI20_jelly)C++20
68 / 100
2095 ms50248 KiB
#include "jelly.h" #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(); int zeros=0; int mx=0; bool podz4=true,podz5=true; for (int i = 0; i<n; i++){ if (a[i]!=b[i])podz5=false; if (b[i]!=b[0])podz4=false; } if (podz4){ if (b[0]==0)return n; sort(a.begin(),a.end()); while(y>=b.back() && a.size()){ y-=b.back(); b.pop_back(); a.pop_back(); zeros++; n--; } vector<int> dp(x+1); for (int i = 0; i<n; i++){ if (!a[i]){ zeros++; continue; } for (int j = x; j>=a[i]; j--){ dp[j]=max(dp[j],dp[j-a[i]]+1); mx=max(mx,dp[j]); } } return mx+zeros; } if (podz5){ int oo=1e9+1; vector<vector<int>> dp(2001,vector<int>(2001,oo)); for (int i = 0; i<n; i++)dp[i][0]=0; for (int i = 1; i<=n; i++){ for (int j = 1; j<=i; j++){ dp[i][j]=min(dp[i-1][j],dp[i-1][j-1]+a[i-1]); } } int num=n,wyn=0,sum=x+y+1; for (int i = n; i>=0; i--){ if (dp[n][i]<=x+y){ wyn=i; sum=dp[n][i]; break; } } mx=wyn; vector<int> to_check; while(wyn && num){ if (dp[num][wyn]==dp[num-1][wyn-1]+a[num-1]){ to_check.push_back(a[num-1]); wyn--; } num--; } bitset<20001> bs; bs[0]=1; for (auto u : to_check)bs|=(bs<<u); for (int i = x; i>=max(0,sum-y); i--){ if (bs[i])return mx; } return max(0,mx-1); } vector<vector<int>> dp(x+1,vector<int>(y+1)); for (int i = 0; i<n; i++){ if (!a[i] || !b[i]){ zeros++; continue; } for (int j = x; j>=0; j--){ for (int u = y; u>=0; u--){ if (j>=a[i])dp[j][u]=max(dp[j][u],dp[j-a[i]][u]+1); if (u>=b[i])dp[j][u]=max(dp[j][u],dp[j][u-b[i]]+1); mx=max(mx,dp[j][u]); } } } return mx+zeros; }
#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...