Pagini recente » Cod sursa (job #1390339) | Cod sursa (job #1156235) | Cod sursa (job #2460836) | Cod sursa (job #1818188) | Cod sursa (job #1522826)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("nrtri.in");
ofstream out("nrtri.out");
int frec[3001];
int v[801];
int j=0,mem=0;
int caut(int l,int r,int val)
{
int mij=(l+r)/2;
if(!r) return 0;
if(l==j) return j;
if(v[mij]>val) { if(mij==0) return mij;
if(v[mij-1]>=val)return caut(l,mij,val);
return mij;
}
if(v[mij]<val) {
if(mij==j) return mij;
if(v[mij+1]<val) return caut(mij,r,val);
return mij+1;
}
if(v[mij]==val){
if(mij==0) return mij;
if(v[mij-1]!=val) return mij;
return caut(l,mij,val);
}
}
int main()
{
int n,x,i;
long long int sol=0;
in>>n;
for(i=0;i<n;i++)
{in>>x;
frec[x]++;
}
for(i=1;i<=3000;i++)
{for(j=0;j<frec[i];j++)
{
v[mem+j]=i;
}
mem+=j;
}
for(i=n-1;i>1;i--)
{
for(j=i-1;v[j]>(v[i]-1)/2;j--)
sol+=(long long int)(j-caut(0,j,v[i]-v[j]));
}
out<<sol;
return 0;
}