Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- const int INF=1e8+7;
- int dp[310][310][2710];
- int main(){
- ios_base::sync_with_stdio(0); cin.tie(0);
- int n, k, t;
- cin >> n >> k >> t;
- for(int i=0; i<=n; i++){
- for(int j=0; j<=k && j<=i+1; j++){
- for(int pos=1; pos<=2700; pos++){
- dp[i][j][pos]=INF;
- }
- }
- }
- vector<int> v(n+1);
- for(int i=1; i<=n; i++)
- cin >> v[i];
- vector<int> amigos;
- amigos.push_back(0);
- for(int i=1; i<=n; i++){
- int aux;
- cin >> aux;
- if(aux)amigos.push_back(i);
- }
- for(int i=1; i<=n; i++){
- for(int j=1; j<=i && j<=k; j++){
- for(int pos=0; pos<=2700; pos++){
- if(pos>=v[i])dp[i][j][pos]=min(dp[i-1][j][pos], dp[i-1][j-1][pos-v[i]]+abs(i-amigos[j]));
- else dp[i][j][pos]=dp[i-1][j][pos];
- }
- }
- }
- for(int i=2700; i>=0; i--){
- if(dp[n][k][i]==INF)continue;
- if(dp[n][k][i]<=t){
- cout << i << endl;
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement