Ciao, ho scritto un codice per Greedy Santa, ottengo corrette tutte le subtasks tranne 2, probabilmente mi perdo qualcosa di ovvio, ma non lo trovo.
Consigli?
#include <stdio.h>
#include <assert.h>
#include <iostream>
#define MAXN 100000
using namespace std;
int N, B, i,j;
int V,sum=0;
int arr[MAXN] { 0 };
int budget=0;
bool check = true;
int main() {
cin >> N >> B;
for(j=0; j<N; j++){
cin >> V;
sum+=V;
arr[V]=1;
for(i=B; i!=-1; i--){
if(arr[i]==1&&i!=V)
arr[i+V]=1;
}
}
j=0;
if(sum<=B)
budget = sum;
else
for(i=0; check; i++){
if(arr[B+i]==1){
budget=B+i;
break;
}
}
printf("%d\n", budget);
return 0;
}