Pagini recente » Cod sursa (job #3032705) | Borderou de evaluare (job #2794869) | Borderou de evaluare (job #331362) | Borderou de evaluare (job #2018388) | Cod sursa (job #3274286)
#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 = j+1, dr = n, mij;
while( st < dr )
{
mij = (st+dr)/2;
///[st, mij] si [mij+1, dr]
if( v[mij+1] < v[i]+v[j] )
dr = mij+1;
else
st = mij;
}
//cout << "Avem " << st << "\n";
int rasaux = dr-(j+1)-1;
if( v[dr] > v[i]+v[j] )
rasaux = 0;
ras += rasaux;
}
}
g << ras;
}