#include <iostream>
#include <stdio.h>
#include <assert.h>
using namespace std;
int compra(int N, int M, int A, int B){
if(M >= N){
if(A * N > B)
return B;
else
return A * N;
}
if(M < N){
int diff = (N / M) + 1;
int tot = 0;
if(A * N > B * diff)
return B * diff;
else {
if(((B * diff) - (A * N)) < B){
int i;
for(i = 1; i != (B * diff)/B; i++){
tot += B;
}
i -= 1;
return tot + A * (N - (M * i));
}
else
return A * N;
}
return A * N;
}
}
int main(){
FILE *fr, *fw;
int N, M, A, B;
fr = fopen("input.txt", "r");
fw = fopen("output.txt", "w");
assert(4 == fscanf(fr, "%d%d%d%d", &N, &M, &A, &B));
fprintf(fw, "%d\n", compra(N, M, A, B));
fclose(fr);
fclose(fw);
return 0;
}
Ci sono 4 subtask errate ma non ne capisco il motivo, avete consigli?