Submission #1169069

#TimeUsernameProblemLanguageResultExecution timeMemory
11690694QT0RJelly Flavours (IOI20_jelly)C++20
54 / 100
2093 ms39752 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){ // bitset<20001> os; // os[0]=1; // for (int i = 0; i<n; i++)os|=(os<<a[i]); // vector<int> dp(x+y+1); // for (int i = 0; i<n; i++){ // if (!a[i]){ // zeros++; // continue; // } // for (int j = x+y; j>=a[i]; j--){ // dp[j]=max(dp[j],dp[j-a[i]]+1); // mx=max(mx,dp[j]); // } // } // if (os[x])return mx+zeros; // else return max(0,mx)+zeros; // } 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...