Pagini recente » Cod sursa (job #2804918) | Cod sursa (job #1318361) | Cod sursa (job #2391720) | Cod sursa (job #1646473) | Cod sursa (job #1522823)
#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(v[mij-1]>=val)return caut(l,mij,val);
return mij;
}
if(v[mij]<val) {
if(v[mij+1]<val) return caut(mij,r,val);
return mij+1;
}
if(v[mij]==val){
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;
}