제출 #1169101

#제출 시각아이디문제언어결과실행 시간메모리
1169101bbartekJelly Flavours (IOI20_jelly)C++20
54 / 100
164 ms192488 KiB
#include <bits/stdc++.h> //#include "jelly.h" using namespace std; typedef long long ll; #define st first #define nd second #define pb push_back const int maxn = 2003; int dp[203][503][503]; int dp2[1003][1003]; int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) { int n = a.size(); bool bibj = 1,aibi = 1; for(int i=1;i<n;i++){ if(b[i] != b[i-1]) bibj = 0; } for(int i=0;i<n;i++){ if(a[i] != b[i]) aibi = 0; } if(aibi){ sort(a.begin(),a.end()); int start = 0,wyn = 0; for(int i=0;i<n;i++){ if(a[i] == 0){ start++; } } for(int i=0;i<=x;i++){ for(int j=0;j<=y;j++){ if(dp2[i][j] == 0){ dp2[i][j] = start; } if(i>0) dp2[i][j] = max(dp2[i][j],dp2[i-1][j]); if(j>0) dp2[i][j] = max(dp2[i][j],dp2[i][j-1]); if(i < x && i + a[dp2[i][j] + 1 - 1] <= x){ dp2[i+a[dp2[i][j] + 1 - 1]][j] = max(dp2[i+a[dp2[i][j] + 1 - 1]][j],dp2[i][j]+1); } if(j < y && j + a[dp2[i][j] + 1 - 1] <= y){ dp2[i][j+a[dp2[i][j] + 1 - 1]] = max(dp2[i][j+a[dp2[i][j] + 1 - 1]],dp2[i][j]+1); } wyn = max(wyn,dp2[i][j]); //cout<<i<<" "<<j<<" "<<dp2[i][j]<<"\n"; } } return wyn; } if(y==0){ int wyn = 0; vector<pair<int,int>> vect; for(int i=0;i<n;i++){ vect.pb({a[i],b[i]}); } sort(vect.begin(),vect.end()); for(int i=0;i<n;i++){ if(vect[i].nd == 0){ wyn++; continue; } if(vect[i].st > x) continue; x -= vect[i].st; wyn++; } return wyn; } if(bibj){ int wartosc = b[0]; int wyn = 0; sort(a.begin(),a.end()); for(auto i : a){ if(x >= i){ wyn++; x-=i; continue; } if(y >= wartosc){ wyn++; y -= wartosc; continue; } break; } return wyn; } 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] >= 0) dp[i][j][k] = max(dp[i][j][k],dp[i-1][j-a[i-1]][k]+1); if(k-b[i-1] >= 0) dp[i][j][k] = max(dp[i][j][k],dp[i-1][j][k-b[i-1]]+1); } } } return dp[n][x][y]; } /* int main(){ int odp = find_maximum_unique(10,4,{1,4,9},{1,4,9}); cout<<odp<<"\n"; return 0; } */
#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...