Pagini recente » Cod sursa (job #2273248) | Cod sursa (job #2393568) | Cod sursa (job #1792864) | Cod sursa (job #1532433) | Cod sursa (job #766176)
Cod sursa(job #766176)
#include <fstream>
using namespace std;
ifstream fin ("nrtri.in");
ofstream fout ("nrtri.out");
void sortare (int ,int );
void merge(int,int,int,int);
//int verif ( int [],int,int,int);
int v[800],aux[800];
int main()
{
int n,j,k,i,nr=0,gata=0;
fin>>n;
for(i=0;i<n;i++)
fin>>v[i];
sortare(0,n-1);
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
{
gata=0;
for(k=j+1;k<n&&!gata;k++)
{
gata=1;
if ( ( v[i]+v[j]>=v[k] )&& (v[i]+v[k]>=v[j] )&&( v[j]+v[k]>=v[i] ) )
{
gata=0;
//fout<<v[i]<<"\n"<<v[j]<<"\n";//<<v[k]<<"\n";
nr++;
}
}
}
fout<<nr;
fin.close();
fout.close();
return 0;
}
void sortare (int a,int b)
{
int mijl;
mijl=a+(b-a)/2;
if(a<b)
{
sortare(a,mijl);
sortare(mijl+1,b);
merge(a,mijl,mijl+1,b);
}
}
void merge (int a,int na,int b,int nb)
{
int i=0,j,k,l;
k=nb;
l=a;
while (a<=na&&b<=nb)
{
if (v[a]<=v[b])
aux[i++]=v[a++];
else
aux[i++]=v[b++];
}
while (a<=na)
{
aux[i++]=v[a++];
}
while (b<=nb)
{
aux[i++]=v[b++];
}
j=i;
for(i=k;i>=l;i--)
{
v[i]=aux[--j];
}
}
/*
int verif( int v[800],int i, int j ,int k)
{
if( ( v[i]+v[j]>=v[k] )&& (v[i]+v[k]>=v[j] )&&( v[j]+v[k]>=v[i] ) )
return 1;
return 0;
}
*/