Cod sursa(job #97895)

Utilizator pandaemonAndrei Popescu pandaemon Data 9 noiembrie 2007 03:55:36
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#include<iostream.h>

FILE*fin=fopen("nrtri.in","r");
FILE*fout=fopen("nrtri.out","w");

long n,i,j,v[801],ab,nrtri;

int citire()
{fscanf(fin,"%ld",&n);
for(i=1;i<=n;i++) fscanf(fin,"%ld",&v[i]);}

int sortare()
{int ad=0,var;
while(ad==0)
{ad=1;
for(i=1;i<n;i++)
if(v[i]>v[i+1])
{ad=0; var=v[i]; v[i]=v[i+1]; v[i+1]=var;}}
}

int binar()
{int test=j+(n-j)/2,k,var=0;  k=test;

if(v[test]>ab) {while(v[k]>=ab) k--;
		if(v[k]<=ab && v[k]!=v[j])
		{var=k-j; for(int i=j+1;i<=k;i++) if(v[i]==v[j]) var--;
						  else break;}  }


else {for(k=test;k>=j+1 && v[k]!=v[j];k--) var++;
      k=test+1; while(v[k]<=ab && k<=n) {k++; var++;} }


nrtri+=var;}



main()
{citire(); sortare();

for(i=1;i<=n-2;i++)
for(j=i+1;j<=n-1;j++) {ab=v[i]+v[j]; binar();}

fprintf(fout,"%ld",nrtri); cout<<endl;
}