Cod sursa(job #235056)

Utilizator BlackjackmdsSpataru Madalin Daniel Blackjackmds Data 22 decembrie 2008 18:21:42
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>
FILE *f,*g;
int main()
{ long int k;
int m[801],n,i,j,a,ab,flow,s

;
f=fopen("nrtri.in","r");
fscanf(f,"%d",&n) ;
for(i=0;i<n;i++)
fscanf(f,"%d",&m[i]);
for(i=0;i<n-1;i++)
	for(j=i+1;j<n;j++)
		if(m[i]>m[j]) {a=m[i];m[i]=m[j];m[j]=a;}
k=0;
for(i=0;i<n-2;i++)
	for(j=i+1;j<n-1;j++)
	{ab=j;flow=n;
	 s=m[i]+m[j];
	while(ab+1<flow) if(m[(ab+flow)/2]==s) {ab=(ab+flow)/2;while(m[ab+1]==s) ab++;}
			    else if(s<m[(ab+flow)/2]) flow=(ab+flow)/2;
					 else       ab=(ab+flow)/2;
	 k=k+ab-j;
	}
g=fopen("nrtri.out","w");
fprintf(g,"%ld",k);
fclose(f);
fclose(g);
return 0;
}