Cod sursa(job #477058)

Utilizator andrey932Andrei andrey932 Data 13 august 2010 11:48:19
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define MAXN 802
#define LMAX 30002

ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int x[MAXN],n,i,j,k,tot,ms,md,mi,mare;

int main()
{
	fin>>n;
	for(i=1;i<=n;i++) fin>>x[i];
	sort(&x[1],&x[n+1]);
	for(i=1;i<n;i++) {
		for(j=i+1;j<=n;j++) {
			mare=x[i]+x[j];			
			ms=j+1; md=n;			
			while (ms+1<md) {
				mi=(ms+md)>>1;
				if (x[mi]<mare) {
					ms=mi;
				}
				else if (mare<x[mi]) {
					md=mi;
				}
				else break;
			}			
			while (x[mi]<=mare&&mi<=n) {mi++;} mi--;
				tot+=mi-j;			
		}
	}
	fout<<tot<<"\n";
	fout.close();	
	return 0;
}