Pagini recente » Cod sursa (job #3293197) | Cod sursa (job #2259052) | Cod sursa (job #2043564) | Cod sursa (job #1966103) | Cod sursa (job #1057949)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin ( "nrtri.in" );
ofstream fout ( "nrtri.out" );
const int nmax = 800;
int v[nmax];
int main()
{
int n, nrtri;
fin>>n;
for ( int i = 0; i<n; ++i ) {
fin>>v[i];
}
sort( v, v+n );
nrtri = 0;
for ( int i = 0; i<n-2; ++i ) {
for ( int j = i+1; j<n-1; ++j ) {
int n2, s;
s = v[i] + v[j];
for ( n2 = 1; 2*n2<=s; n2 *= 2 ){
}
int pas, sol;
sol = j;
for ( pas = n2; pas>0; pas /= 2 ) {
if ( sol+pas<n && v[sol+pas]<=s )
sol += pas;
}
nrtri += sol-j;
}
}
fout<<nrtri<<'\n';
fin.close();
fout.close();
return 0;
}