Pagini recente » Cod sursa (job #1138149) | Cod sursa (job #827347) | Cod sursa (job #1293115) | Cod sursa (job #2362651) | Cod sursa (job #1493774)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[805] ;
int f ( int a , int b , int n )
{
int i , sol = 0 , ok = 1 ;
int st = b + 1 , dr = n ;
int med , last = 0 ;
while ( st <= dr )
{
med = ( st + dr ) / 2 ;
if ( v[med] > v[a] + v[b] )
dr = med - 1 ;
if ( v[med] < v[a] + v[b] )
{
st = med + 1 ;
last = med ;
}
if ( v[med] == v[a] + v[b] )
{
ok = 0 ;
last = med ;
sol = last - b ;
return sol ;
}
}
if ( ok == 1 && last > b )
return last - b ;
return 0 ;
}
int main()
{
freopen ( "nrtri.in" , "r" , stdin ) ;
freopen ( "nrtri.out" , "w" , stdout ) ;
int n , i , j , sol , s = 0 ;
scanf ( "%d" , &n ) ;
for ( i = 1 ; i <= n ; i ++ )
scanf ( "%d" , &v[i] ) ;
sort ( v + 1 , v + n + 1 ) ;
for ( i = 1 ; i <= n ; i ++ )
for ( j = i + 1 ; j < n ; j ++ )
{
sol = f ( i , j , n ) ;
s += sol ;
}
printf ( "%d\n" , s ) ;
return 0;
}