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.
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.