Pagini recente » Cod sursa (job #2780247) | Cod sursa (job #2111636) | Cod sursa (job #879166) | Cod sursa (job #1880083) | Cod sursa (job #477055)
Cod sursa(job #477055)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define MAXN 802
#define LMAX 30002
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int x[MAXN],n,i,j,k,tot,ms,md,mi,mic,mare,st,dr;
int main()
{
fin>>n;
for(i=1;i<=n;i++) fin>>x[i];
sort(&x[1],&x[n]);
j=1;
for(i=1;i<n;i++) {
for(j=i+1;j<=n;j++) {
ms=j+1; md=n;
mic=abs(x[i]-x[j]);
mare=x[i]+x[j];
while (ms+1<md) {
mi=(ms+md)>>1;
if (x[mi]<mare) {
ms=mi;
}
else if (mare<x[mi]) {
md=mi;
}
else break;
}
dr=mi;
while (x[dr]<=mare&&dr<=n) {dr++;} dr--;
ms=j+1; md=n;
while (ms+1<md) {
mi=(ms+md)>>1;
if (x[mi]<mic) {
ms=mi;
}
else if (mic<x[mi]) {
md=mi;
}
else break;
}
st=mi;
while (x[st]>=mic&&st>j) {st--;} //st--;
tot+=dr-st;
}
}
fout<<tot<<"\n";
fout.close();
return 0;
}