Cod sursa(job #361372)

Utilizator eu93Marian S eu93 Data 4 noiembrie 2009 20:22:51
Problema Numarare triunghiuri Scor 70
Compilator cpp Status done
Runda CNRV #4 Marime 0.61 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{ int i,mij,st,dr,sol=0,n,v[900],j,ok;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
f>>n;
for (i=1;i<=n;i++) f>>v[i];
sort (v+1,v+1+n);
for (i=1;i<=n-2;i++){
	for (j=i+1;j<=n-1;j++){
		st=j+1;
		dr=n; ok=0;
		while (st<dr) {
			mij=(st+dr)/2;
			if ((v[mij]<=v[j]+v[i] && (v[mij+1]>v[i]+v[j])) || mij==n){ok=1; break;}
			else if (v[mij]>v[i]+v[j]) dr--;
			else dr++;
		}
	    if (ok==1)  sol+=mij-j; 
		else if (ok==0 && dr==n && v[dr]<=v[j]+v[i]) sol++; 
	}
}
g<<sol;
f.close();
g.close();
return 0;
}