Pagini recente » Cod sursa (job #2578255) | Cod sursa (job #2087567) | Cod sursa (job #605698) | Cod sursa (job #1083891) | Cod sursa (job #1150899)
#include<fstream>
#include<algorithm>
using namespace std;
int x[803], i, j, n, p, p1, u, u1, ok, mij, sol, s, d;
int mod(int x){
return (x>0?x:-x);
}
ifstream in("nrtri.in");
ofstream out("nrtri.out");
int main(){
in>>n;
for(i=1; i<=n; i++)
in>>x[i];
sort(x+1, x+n+1);
for(i=1; i<n; i++){
for(j=i+1; j<=n; j++){
ok=0;
s=x[i]+x[j];
d=mod(x[i]-x[j]);
p=i; u=n;
while(p<=u){
mij=p+(u-p)/2;
if(x[mij]<s)
p=mij+1;
else
u=mij-1;
}
u1=u;
if(x[u1]>d)
ok=1;
p=i; u=n;
while(p<=u){
mij=p+(u-p)/2;
if(x[mij]<s && x[mij]>d)
u=mij-1;
else
p=mij+1;
}
p1=p;
if(u1-p1+1>0 && ok!=0 && p1<u1){
sol+=u1-p1+1;
if(i>=p1 && i<=u1)
sol--;
if(j>=p1 && j<=u1)
sol--;
}
}
}
out<<sol;
return 0;
}