Pagini recente » Cod sursa (job #2303742) | Cod sursa (job #2103647) | Cod sursa (job #1553857) | Cod sursa (job #343653) | Cod sursa (job #179636)
Cod sursa(job #179636)
#include<fstream.h>
int v[1000],i,n,k,ok=0,sum,sol=0,s,d,m,j,aux;
int main()
{
ifstream f("nrtri.in");
ofstream g("nrtri.out");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
while(!ok)
{ ok=1;
for(i=1;i<n;i++)
if(v[i]>v[i+1]) {aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; ok=0;}
}
for(i=1;i<=n-2;i++)
for(j=i+1;j<n;j++)
{ s=j+1; d=n;
m=(s+d)/2;
sum=v[i]+v[j]; ok=0;
while(!ok&&s<=d)
if(v[m]>sum) { d=m-1;
m=(s+d)/2;
}
else if(v[i]+v[m]<v[j]||v[j]+v[m]<v[i]) { s=m+1;
m=(s+d)/2;
}
else ok=1;
if(ok)
{ k=m;
while(ok&&k<=n)
{ if(v[i]+v[j]>=v[k]&&v[i]+v[k]>=v[j]&&v[j]+v[k]>=v[i]) sol++;
else ok=0;
k++;
}
ok=1; k=m-1;
while(ok&&k>j)
{ if(v[i]+v[j]>=v[k]&&v[i]+v[k]>=v[j]&&v[j]+v[k]>=v[i]) sol++;
else ok=0;
k--;
}
break;
}
}
g<<sol;
f.close();
g.close();
return 0;
}