Cod sursa(job #465120)

Utilizator andunhillMacarescu Sebastian andunhill Data 23 iunie 2010 12:58:40
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
vector<int>lat;
int N,nr,x;
int caut_bin(int st,int dr,int x)
{	int mijl,poz=0;
	while(st<=dr)
	{	mijl=(st+dr)/2;
		if(x>=lat[mijl])
			poz=mijl , st=mijl+1;
		else
			dr=mijl-1;
	}
	return poz;
}
int main()
{	f>>N;
	int r;
	lat.push_back(-1);
	for(int i=1;i<=N;i++)
		f>>r , lat.push_back(r);
	sort(lat.begin(),lat.end());
	for(int i=1;i<=N;i++)
		for(int j=i+1;j<=N;j++)
		{	x=caut_bin(j,N,lat[i]+lat[j]);
			if(x!=0)
				nr+=(x-j);
		}
	g<<nr;
	f.close();
	g.close();
	return 0;
}