Cod sursa(job #323915)

Utilizator andreioneaAndrei Onea andreionea Data 14 iunie 2009 05:19:37
Problema Numarare triunghiuri Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
#include<string.h>
int v[801],vv[801],b[30001],s[30001],i,p=0,j,n,max=30000;
int main()
{FILE *f=fopen("nrtri.in","r"),*g=fopen("nrtri.out","w");
 memset(b,0,sizeof(b));
 memset(s,0,sizeof(s));
 fscanf(f,"%d",&n);
 for(i=1;i<=n;++i)
  {fscanf(f,"%d",&v[i]);++b[v[i]];
  // if(v[i]>max) max=v[i];
  }
 for(i=1;i<=max;++i) 
  {s[i]=s[i-1]+b[i];
   if(b[i])
	for(j=1;j<=b[i];++j) vv[++p]=i;
 }
 p=0;
 for(i=1;i<n;++i)
 for(j=i+1;j<=n;++j)
	if((vv[i]+vv[j])<=max)
        p+=s[vv[i]+vv[j]]-s[vv[j]-1]-1;
	
 if(!p) p--;
 fprintf(g,"%d",p);
 fclose(f);
 fclose(g);
 return 0;
}