SPOJ returns "Wrong answer" for seemingly correct solution

2

I tried to solve the problem of BANCO12 - Bank , but when submitting my C ++ code, the system returns " wrong answer". Here's my code: '

#include <iostream>
using namespace std;

int main(){
    int nc, np, i, c, livre=0, cont=0;
    cin>>nc>>np;
    int caixa[nc], espera[np], chegada, demora;

    for(i=0; i<nc; i++){
        caixa[i]=0;
    }

    for(i=0; i<np; i++){
        cin>>chegada>>demora;
        espera[i] = caixa[livre]-chegada;
        if(espera[i]>20){cont++;}
        caixa[livre]+=demora;

        if(nc>1){
            for(c=0; c<nc; c++){
                if(caixa[livre]>caixa[c]){
                    livre = c;
                }
            }
        }
    }
    cout<<cont<<endl;
    return 0;
}

I do not know where the error is, can you help me?

    
asked by anonymous 25.03.2016 / 05:29

1 answer

0

I found the solution, the code was not considering the case where the arrival is greater than free cash. Then just add this line of code: if(chegada>caixa[livre]){caixa[livre]=chegada;} , before calculating the wait. The final code looks like this:

#include <iostream>
using namespace std;

int main(){
    int nc, np, i, c, livre=0, cont=0;
    cin>>nc>>np;
    int caixa[nc], espera[np], chegada, demora;

    for(i=0; i<nc; i++){
        caixa[i]=0;
    }

    for(i=0; i<np; i++){
        cin>>chegada>>demora;
        if(chegada>caixa[livre]){caixa[livre]=chegada;}
        espera[i] = caixa[livre]-chegada;
        if(espera[i]>20){cont++;}
        caixa[livre]+=demora;

        if(nc>1){
            for(c=0; c<nc; c++){
                if(caixa[livre]>caixa[c]){
                    livre = c;
                }
            }
        }
    }
    cout<<cont<<endl;
    return 0;
}
    
25.03.2016 / 16:24