Cod sursa(job #600400)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 1 iulie 2011 16:10:14
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb

#include <cstdio>
#include <fstream>
#include <algorithm>

using namespace std;

int r,v[1024];

void srch (int f,int b,int x){
	
	if(f==b){
		if(v[f]<=x&&f>r)
			r=f;
		return;
		}
	int m=(f+b)>>1;
	if(v[m]<=x){
		if(m>r)
			r=m;
		srch(m+1,b,x);
		}
	else
		srch(f,m,x);
	
	}

int main ()
{
	
	int n,s=0;
	ifstream f ("nrtri.in");
	freopen ("nrtri.out","w",stdout);
	f>>n;
	for(int i=1;i<=n;++i)
		f>>v[i];
	sort(v+1,v+n+1);
	for(int i=1;i+1<n;++i)
		for(int j=i+1;j<n;++j){
			r=0;
			srch(j+1,n,v[i]+v[j]);
			if(r)
				s+=(r-j);
			}
	printf("%d",s);
	
	return 0;}