Pagini recente » Cod sursa (job #987203) | Cod sursa (job #1711689) | Cod sursa (job #69549) | Cod sursa (job #1954646) | Cod sursa (job #1714620)
#include <cstdio>
#include <algorithm>
#define MAX 6000000
#define INF 200000005
using namespace std;
char f[MAX];
int pos=0,N,v[1000];
long long S=0;
void r(int &nr)
{
nr=0;
while(f[pos]<'0'||f[pos]>'9')
pos++;
while(f[pos]>='0'&&f[pos]<='9')
nr=nr*10+f[pos++]-'0';
}
void bsearch(int check,int start)
{
int lw=start,hi=N,mi=start;
while(lw<=hi)
{
mi=(lw+hi)>>1;
if(v[mi]>check||(v[mi]==check&&v[mi-1]==check))
hi=mi-1,lw=min(mi-3,lw);
else if(v[mi]<check)
lw=mi+1;
else
break;
}
S+=N-mi;
}
int main()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
fread(f,1,MAX,stdin);
r(N);
for(int i=1;i<=N;i++)
r(v[i]);
sort(v+1,v+N+1);
for(int i=1;i<N-1;i++)
for(int j=i+1;j<N;j++)
bsearch(v[i]+v[j],j+1);
printf("%lld",S);
return 0;
}