Pagini recente » Statistici Marina Cristina (crismarina) | Cod sursa (job #801085) | Cod sursa (job #731379) | Cod sursa (job #2964552) | Cod sursa (job #3154079)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int v[805];
bool verif(int med,int a,int b){// abc tri daca sum a 2 l > a 3a l
return v[a]+v[b]>=v[med];
}
int cautbin(int a, int b, int n){
int rasp=b;
int st=b+1;
int dr=n;
while(st<=dr){
int med=(st+dr)/2;
if(verif(med,a,b)){
rasp=med;
st=med+1;
}
else{
dr=med-1;
}
}// v[med] e cea mai mare val pe care poate sa o ia
//cout<<v[a]<<" "<<v[b]<<" "<<v[rasp]<<' '<<rasp-b<<endl;
return rasp-b;
}
int main()
{
int n;
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
sort(v+1,v+n+1);
int cont=0;
for( int a=1;a<=n;a++){
for(int b=a+1;b<=n;b++){
cont+=cautbin(a,b,n);
}
}
fout<<cont;
return 0;
}