Submission #1304057

#TimeUsernameProblemLanguageResultExecution timeMemory
1304057exoworldgdJelly Flavours (IOI20_jelly)C++20
100 / 100
137 ms154808 KiB
#pragma GCC optimize("O5,unroll-loops,inline,fast-math") #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt") #include <bits/stdc++.h> #define exoworldgd cin.tie(0)->sync_with_stdio(0), cout.tie(0) #define ll long long #define pii pair<int,int> using namespace std; const int N=1e5+5,M=1e9+7; const ll inf=1e18; int find_maximum_unique(int x, int y, vector<int> A, vector<int> B) { ll n=A.size(),mx=0; pii v[n]; for(int i=0; i<n; i++) v[i]={A[i],B[i]}; sort(v,v+n); ll dp[n+1][x+1]; for(int j=0; j<=x; j++) dp[0][j]=0; for(int i=1; i<=n; i++){ int ca=v[i-1].first, cb=v[i-1].second; for(int j=0; j<=x; j++){ dp[i][j]=dp[i-1][j]+cb; if(j>=ca) dp[i][j]=min(dp[i][j],dp[i-1][j-ca]); } } for(int k=0; k<=n; k++){ ll mn=inf; for(int j=0; j<=x; j++) mn=min(mn,dp[k][j]); if(mn>y) continue; ll rem=y-mn,s=0,c[n-k]; for(int i=k; i<n; i++) c[i-k]=v[i].second; sort(c,c+n-k); for(int i=0; i<n-k; i++) if(rem>=c[i]) rem-=c[i],s++; mx=max(mx,k+s); } return mx; }
#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...