# Ristorante 5/100

**URL:** <https://forum.olinfo.it/t/ristorante-5-100/4624>\
**Category:** Aiuto\
**Created:** [4 Maggio 2017, 9:07pm UTC](https://forum.olinfo.it/t/ristorante-5-100/4624 "2017-05-04T21:07:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Void.Think](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/v/c57346/32.png) [@Void.Think](https://forum.olinfo.it/u/Void.Think)\
**Post date:** [4 Maggio 2017, 9:07pm UTC](https://forum.olinfo.it/t/ristorante-5-100/4624/1 "2017-05-04T21:07:35Z")

</div>

Ciao ragazzi ho provato a sviluppare l’algoritmo dell’esercizio “ristorante” e una volta inviato il codice ottengo 5/100 pt ovvero 6 output sbagliati su 20. Questo è il codice nel main:

```
{
long N, D, a[100000], M, R = 0, F = 0, S;

FILE *input, *output;
input = fopen("input.txt","r");
output = fopen("output.txt","w");

fscanf(input,"%ld %ld", &N, &D);
for(auto i=0; i<N; i++) fscanf(input,"%ld ", &a[i]);
fscanf(input,"%ld", &M);

    if(M>N)
    {
        sort(a,a+N);
        S = M - N;
        for(auto i=0; i<N; i++) R+=a[i];
        F = R - (S * D);
    }
    else if(M<N)
    {
        sort(a,a+N);
        S = M - N;
        for(auto i=0; i<M; i++) R+=a[i];
        F = R - (S * D);
    }
    else if(M==N)
    {
        for(auto i=0; i<M; i++) R+=a[i];
    }

fprintf(output,"%ld",F);

fclose(input);
fclose(output);
return 0;

```

Sapete dirmi dov’è l’errore ?

---

<div class="post-metadata">

**Author:** ![frakkiobello](https://forum.olinfo.it/user_avatar/forum.olinfo.it/frakkiobello/32/2768_2.png) [@frakkiobello](https://forum.olinfo.it/u/frakkiobello)\
**Post date:** [5 Maggio 2017, 9:29am UTC](https://forum.olinfo.it/t/ristorante-5-100/4624/2 "2017-05-05T09:29:59Z")

</div>

L’errore credo sia nei casi in cui M\<N, perché tu togli al risultato finale un multa(che diventerà anche positiva in quanto M-N darà un valore negativo.  
Dovresti evitare di calcolare S e togliere la “multa” in quel caso.
