Non riesco a spiegarmi il motivo per cui tutti test vanno bene tranne il 17, che mi da output errato.
Questo è l’algoritmo:
#include <stdio.h>
void quicksort(int a[10000],int primo,int ultimo){
int i, j, pivot, temp;
if(primo<ultimo){
pivot=primo;
i=primo;
j=ultimo;
while(i<j){
while(a[i]<=a[pivot]&&i<ultimo)
i++;
while(a[j]>a[pivot])
j--;
if(i<j){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
temp=a[pivot];
a[pivot]=a[j];
a[j]=temp;
quicksort(a,primo,j-1);
quicksort(a,j+1,ultimo);
}
}
int main()
{
FILE *fr=fopen("input.txt", "r");
FILE *fw=fopen("output.txt", "w");
int N, D, M, a[100000], k, sum=0;
fscanf(fr, "%i %i", &N, &D);
for(k=0; k<N; k++)
{
fscanf(fr, "%i", &a[k]);
sum=sum+a[k];
}
fscanf(fr, "%i", &M);
if(M>N)
{
int y;
y=(M-N)*D;
sum=sum-y;
fprintf(fw, "%i", sum);
}
else if(M<N)
{
sum=0;
quicksort(a, 0, N);
for(int g=1; g<=M; g++)
{
sum=sum+a[g];
}
fprintf(fw, "%i", sum);
}
else if(M==N)
{
fprintf(fw, "%i", sum);
}
fclose(fr);
fclose(fw);
return 0;
}