Good evening. On Subtask 2 (N <= 20), on three tasks, I get the wrong output. Otherwise all outputs are correct.
Does anyone know what could be the reason for this?
#include <stdio.h>
#include <assert.h>
#include <bits/stdc++.h>
using namespace std;
// constraints
#define MAXN 10000
// input data
int N, B, s, i, j, answer, sum;
int V[MAXN];
int main() {
answer, sum = 0;
assert(2 == scanf("%d%d", &N, &B));
for(s = 0; s < N; s++){
assert(1 == scanf("%d", &V[s]));
answer += V[s];
}
// insert your code here
if(answer < B){
printf("%d", answer); // print result
}
else{
sort(V, V + N);
sum = V[N-1];
for(int j = N-1, i = j-1; j >= 0;){
while(V[j] > B){
sum = V[j];
j--;
i--;
//cout << "SWITCH j = "<< j << " i = "<< i << " sum = " << sum << endl;
}
if(sum == B){
answer = sum;
break;
}
sum += V[i];
//cout << "SUM = " << sum << endl;
if(sum >= B){
if(sum < answer){
answer = sum;
//cout << "NEW HIGHEST = " << answer << endl;
if(answer == B){
break;
}
}
sum -= V[i];
//cout << "SUM = " << sum << endl;
}
if(i <= 0){
j--;
i = j-1;
sum = V[j];
//cout << "SWITCH j = "<< j << " i = "<< i << " sum = " << sum << endl;
//cout << "SUM = " << sum << endl;
}else{
i--;
}
}
printf("%d", answer); // print result
}
return 0;
}