Cod sursa(job #741896)

Utilizator CrescentselectJicol Crescent Crescentselect Data 27 aprilie 2012 12:47:25
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<iostream>
#include<fstream>
#include <algorithm>
using namespace std;

ifstream f("nrtri.in");
ofstream g("nrtri.out");

int N;
int v[40000];
int rez;

void citire()
{
	f>>N;
	int i;
	for(i=1;i<=N;i++)
	{
		f>>v[i];
	}
}
int cautbin(int x)
{
	int i,pas=1<<15;
	for(i=0;pas!=0;pas/=2)
		if(i+pas<=N && v[i+pas]<=x)
			i+=pas;
	return i+1;
}
void procesare()
{
	int k;
	for(int i=1;i<N;i++)
	{
		for(int j=i+1;j<N;j++)
		{
			k=cautbin(v[i]+v[j]);
			if(k>j)
			{
				rez+=k-j-1;
			}
		}
	}
}
int main()
{

	citire();

	sort(&v[1],&v[N+1]);

	procesare();
	g<<rez;
	return 0;
}