Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Secvb  (Citit de 7536 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Gady_paul
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« : Iulie 18, 2011, 20:49:10 »

Va salut. Sunt nou pe forum, si intr-ale programarii (un an de programare nu e chiar mult, nu?). Mai fac din cand in cand probleme pe .campion...si acum m-am impiedicat de una. Problema este secvb: http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1221. Am refacut implementarea de vreo 4-5 ori, prin diverse metode, cu stl sau fara (momentan incerc sa fac toate problemele in c, procedural. Mi se pare o practica buna sa stiu ce e in spatele functiilor), si pe toate sursele iau 80 (debugul nu e o solutie...sunt 40000 de numere....).
Am implementat o functie care returneaza numarul de cifre de 1 din numar, si le asez in vectorul a. b este o coada. Am inteles ca nu e voie sa pun toata sursa...asa ca pun doar functia subs, care imi returneaza numarul de subsiruri cu suma max din vectorul a, care are n elemente.

Cod:
long subs(long n, long max){

    long sum=0, k=0;
    for(int i=0; i<n;){
        if(sum<max){
            p.push(a[i]);
            sum+=a[i];
            i++;
            if(sum==max){
                k++;
                sum-=p.front();
                p.pop();
            }
        }else{
            if(sum==max){
                k++;
                sum-=p.front();
                p.pop();
            }else{
                sum-=p.front();
                p.pop();
            }
        }
    }

    return k;
}

Nu stiu unde e problema...pe teste mici merge...asa ca nu ma gandesc decat la ceva de ordin fie algoritmic, fie in tipurile de date.

Va multumesc.
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #1 : Iulie 18, 2011, 22:16:17 »

Scuze, nu ti-am urmarit codul pana la capat, dar din cate imi dau seama raspunsul nu se incadreaza in int neaparat. Iti trebuie long long. ( Vezi ca long = int  Smile ) Ar putea fi asta.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines