Can sme1 tell me whats wrong with this thx spoj.pl/problems/MAXSUMSQ/
# include<stdio.h>
# include<stdlib.h>
int main(){
int** tests;
long* tot;
int size,i=0,j;
long total;
long long sum,count,max,zeros;
scanf("%d",&size);
tests=(int **)malloc(sizeof(int*)*size);
tot=(long*)malloc(sizeof(long)*size);
while(i<size){
scanf("%ld",&total);
tests[i]=(int *)malloc(sizeof(int)*total);
tot[i]=total;
for(j=0;j<total;j++)
scanf("%d",&tests[i][j]);
i++;
}
for(j=0;j<size;j++){
sum=tests[j][0];
count=1;
max=sum;
if(tests[j][0]==0)
zeros=1;
else
zeros=0;
for(i=1;i<tot[j];i++){
if(max<0){
if(tests[j][i]>max){
sum=tests[j][i];
max=tests[j][i];
count=1;
}
else if(tests[j][i]==max)
count++;
}
else if(max==0){
while(i<tot[j] && tests[j][i]==0){
i++;
zeros++;
}
if(i==tot[j]){
count=count+((long long)zeros)*(zeros+1)/2;
break;
}
else if(tests[j][i]>0){
max=tests[j][i];
count=zeros+1;
sum=tests[j][i];
}
else{
count=count+((long long)zeros)*(zeros+1)/2;
zeros=0;
}
}
else{
sum+=tests[j][i];
if(sum<0){
sum=0;
zeros=0;
}
else if(sum>max){
max=sum;
count=zeros+1;
}
else if(sum==max)
count=count+zeros+1;
else if(sum==0)
zeros++;
}
}
if(zeros==tot[j])
count--;
printf("%lld %lld\n",max,count);
}
for(i=0;i<size;i++)
free(tests[i]);
free(tests);
return 0;
}