Cod sursa(job #245829)

Utilizator catalin93Catalin Ionescu catalin93 Data 18 ianuarie 2009 23:36:14
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 5000
int a[N],n,x;
char s[N];

/*
void sortare()
{
	int i,sort,aux;
	sort = 0;
	while(sort==0)
	{
		sort = 1;
		for(i=1;i<=n-1;i++)
		
			if(a[i] > a[i+1])
			{
				aux = a[i];
				a[i] = a[i+1];
				a[i+1] = aux;
				sort = 0;
			}
	}
	
}
*/
int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

int main()
{
	int i,j,k,nr;
	
	freopen("nrtri.in","r",stdin);
	freopen("nrtri.out","w",stdout);
	
	scanf("%d\n",&n);
	/*
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);
	*/
	fgets(s,N,stdin);
	k=-1;x=0;
    for (i=0;s[i]!=NULL;i++)
        if (s[i]==' ') a[++k]=x,x=0;
            else x=x*10+s[i]-'0';
	a[++k]=x;
	//sortare();
	qsort (a, n+1, sizeof(a[1]), compare);
	nr = 0;
	for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
		{
			for(k=n;a[k]>a[i]+a[j];k--)
				;
			nr+=k-j;
			/*
			if(a[i] + a[j] >= a[k])
			{
				s += n - k  ;
				break;
			}
			*/
		}
	/*for(i=1;i<=n;i++)
		printf("%d\n",a[i]);*/
	printf("%d",nr);
	return 0;
}