Cod sursa(job #480172)

Utilizator costyv87Vlad Costin costyv87 Data 26 august 2010 17:40:10
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
int v[1000],max,pos;
void caut(int i,int j, int x)
{
if (i<=j) {
	int m=(i+j)/2;
	if (v[m]>x) caut(i,m-1,x);
		else   {
			if (max<v[m] || (max==v[m] && m>pos)) {max=v[m]; pos=m;}
			caut(m+1,j,x);
			}
	 }
}
int main() {
FILE *f,*g;
f=fopen("nrtri.in","r");
g=fopen("nrtri.out","w");
int n,i,j,aux;
fscanf(f,"%d",&n);

for (i=0;i<=n-1;i++)  fscanf(f,"%d",&v[i]);
//using namespace std;
//sort(v,v+n);
for (i=0;i<=n-2;i++)
 for (j=i+1; j<=n-1;j++)
   if (v[i]>v[j]) {
		   aux=v[i];
		   v[i]=v[j];
		   v[j]=aux;
			}
int nr=0;
for (i=0;i<=n-3;i++)
    for (j=i+1;j<=n-2;j++)    {
			    pos=-1; max=0;
			caut(j+1,n-1,v[i]+v[j]);
			  if (pos-j>0) nr+=pos-j;
				   }
fprintf(g,"%d",nr);
fclose(g);
return 0;
}