Pagini recente » Cod sursa (job #3273101) | Borderou de evaluare (job #682080) | Borderou de evaluare (job #222208) | Borderou de evaluare (job #2374920) | Cod sursa (job #3274284)
#include <bits/stdc++.h>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int main() {
int n;
f >> n;
int v[n+1];
long long ras = 0;
for( int i = 1; i <= n; ++i )
{
f >> v[i];
}
sort( v+1, v+1+n );
for( int j = 2; j <= n; ++j )
{
for( int i = 1; i < j; ++i )
{
//cout << "Analizam " << v[i] << " " << v[j] << ", " << i << " " << j << "\n";
///v[i] + v[j] > v[x]
int st = 1, dr = n, mij;
while( st < dr )
{
mij = (st+dr)/2;
///[st, mij] si [mij+1, dr]
if( v[mij] > v[i]+v[j] )
dr = mij;
else
st = mij+1;
}
//cout << "Avem " << st << "\n";
int rasaux = n - st+1;
if( i >= st )
--rasaux;
if( j >= st )
--rasaux;
if( v[st] <= v[i]+v[j] )
rasaux = 0;
ras += rasaux;
}
}
g << ras;
}