Pagini recente » Cod sursa (job #232129) | Cod sursa (job #247766) | Arhiva de probleme | Cod sursa (job #1635247) | Cod sursa (job #361244)
Cod sursa(job #361244)
#include <stdio.h>
#include <algorithm>
using namespace std;
int main ()
{ int v[800],i,nr=0,st,dr,j,m,n,ok;
FILE *f=fopen("nrtri.in","r");
FILE *g=fopen("nrtri.out","w");
fscanf(f,"%d",&n);
for (i=1; i<=n; i++)
fscanf (f,"%d",&v[i]);
sort(v+1, v+1+n);
for(i=1; i<=n-2; i++)
for(j=i+1; j<=n-1; j++)
{ st=j+1;
dr=n;
ok=1;
while (st<=dr && ok)
{ m=(st+dr)/2;
if (v[m]<=v[i]+v[j] && (v[m+1]>v[i]+v[j]|| m+1==n)) { nr+=m-j; ok=0;}
else if (v[m]>v[i]+v[i]) dr=st-1;
else st=dr+1;
}
}
fprintf(g,"%d",nr);
fclose (f);
fclose (g);
return 0;
}