Cod sursa(job #938464)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 12 aprilie 2013 17:44:42
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <algorithm>
using namespace std;
const char iname[] = "nrtri.in";
const char oname[] = "nrtri.out";
ifstream fin(iname);
ofstream fout(oname);
int N, i, j, ANS, x_need, cnt;
int v[804];
inline int binary_search (int x)
{
	int st = j, dr = N, last_mid = 0;
	while (st <= dr)
	{
		int mid = (st + dr) / 2;
		if (v[mid] <= x)
			last_mid = mid,
			st = mid + 1;
		else 
			dr = mid - 1;
	}
	if (last_mid) return last_mid;
	else 
		return 0;
}
int main()
{
	fin >> N;
	for (i = 1; i <= N; ++i) fin >> v[i];
	sort (v + 1, v + N + 1);
	for (i = 1; i <= N; ++i)
	{
		for (j = i + 1; j <= N; ++j)
		{
			x_need = v[i] + v[j];
			cnt = binary_search(x_need);
			if (cnt)
				ANS += (cnt - j);
		}
	}
	fout << ANS << '\n';
	return 0;
}