Cod sursa(job #595035)

Utilizator nicknameLare Nicu nickname Data 10 iunie 2011 21:59:54
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int main(){
	freopen("nrtri.in","r",stdin);
	freopen("nrtri.out","w",stdout);
	int n,v[805];
	scanf("%d",&n);
	for (int i=0; i<n; ++i)
		scanf("%d",v+i);
	sort(v,v+n);
	long long nr=0;
	for (int i=0; i<n-2; ++i)
		for (int j=i+1; j<n-1; ++j){
			int l=j,r=n-1,m;
			while (l <= r){
				m=l+(r-l)/2;
				if (v[i]+v[j] >= v[m]){
					while (m < n && v[i]+v[j] >= v[++m]);
					break;
				}
				else
					r=m-1;
			}
			nr+=m-j-1;
		}
	printf("%lld",nr);
	return 0;
}