Cod sursa(job #1936117)
Utilizator | AliniateEBlat ContDeRacist | Data | 22 martie 2017 20:50:48 |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.67 kb |
//#include <iostream>
#include <cmath>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream cin("nrtri.in");
ofstream cout("nrtri.out");
int v[810],n;
int cautb(int x)
{
int pas=1<<9,r=-1;
while(pas!=0){
if(r + pas < n && v[r+pas] <= x){
r+=pas;
}
pas/=2;
}
return r;
}
int main()
{
int z,cnt=0;
cin>>n;
for(int i=0 ; i<n ; ++i){
cin>>v[i];
}
sort(v,v+n);
for(int i=0 ; i<n-2 ; ++i){
for(int j=i+1 ; j<n-1 ; ++j){
z=cautb(v[i] + v[j]);
if(z>j){
cnt+=z-j;
}
}
}
cout<<cnt;
return 0;
}