Cod sursa(job #210051)

Utilizator andyciupCiupan Andrei andyciup Data 26 septembrie 2008 11:13:03
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
int n, v[900];
int caut(int a){
	int p=1;
	int	q=n;
	int m;
	while(p!=q){
		m=p+(q-p)/2;
		if(a<=v[m]){
			q=m;}
		else p=m+1;
	}
	while(v[p+1]==a)
		p++;
	if(a<v[p])
	return p-1;
	return p;
}
		
	

int main(){
	freopen("nrtri.in", "r", stdin);
	freopen("nrtri.out", "w", stdout);
	int q, w, e, s=0;
	scanf("%d", &n);
	for(int i=1; i<=n; ++i){
		scanf("%d", &v[i]);}
	int c;
	for(int i=1; i<n; ++i){
		int min=i;
		for(int j=i+1; j<=n; ++j)
			if(v[min]>v[j])
				min=j;
		if(min!=i){
			c=v[i];
			v[i]=v[min];
			v[min]=c;
		}
	}
	for(q=1;q<=n-2;++q)
		for(w=q+1;w<=n-1;++w){
				s=s+caut(v[w]+v[q])-w;
			}
	printf("%d", s);
	
	
	return 0;
}