Pagini recente » Monitorul de evaluare | Cod sursa (job #785824) | Cod sursa (job #459139) | Cod sursa (job #2422871) | Cod sursa (job #2257589)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[801];
int main()
{
int n, i, l, mij, st, dr, sum=0, el;
FILE *fin, *fout;
fin=fopen("nrtri.in" ,"r");
fout=fopen("nrtri.out" ,"w");
fscanf(fin, "%d" ,&n);
for(i=1;i<=n;i++) {
fscanf(fin, "%d" ,&v[i]);
}
sort (v+1, v+n+1);
for (i=1;i<=n-2;i++) {
for (l=i+1;l<=n-1;l++) {
st=l+1;
dr=n;
el=-1;
while (st<=dr) {
mij=(st+dr)/2;
if (v[mij]>v[i]+v[l]) {
dr=mij-1;
}
else {
el=1;
st=mij+1;
}
}
if (el==1) {
sum+=(mij-l);
}
//fprintf(fout, "%d %d\n" ,mij ,l);
}
}
fprintf(fout, "%d" ,sum);
return 0;
}