Pagini recente » Cod sursa (job #852960) | Cod sursa (job #1551084) | Cod sursa (job #1864158) | Cod sursa (job #2777504) | Cod sursa (job #370482)
Cod sursa(job #370482)
#include<fstream.h>
long nn,n,a[1000],d,s,nr;
void ex(long i,long j)
{
long aux=a[i];
a[i]=a[j];
a[j]=aux;
}
void qs(long i,long j)
{
long s=i,d=j,piv=a[(i+j)>>1];
while(s<=d)
{
while(a[s]<piv)s++;
while(a[d]>piv)d--;
if(s<=d)
{
ex(s,d);
s++;
d--;
}
}
if(i<d) qs(i,d);
if(s<j) qs(s,j);
}
int main()
{
int ok,okk,i,j,l,r,m;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
f>>n;
for(i=1;i<=n;i++)f>>a[i];
qs(1,n);
for(i=1;i<=n-2;i++)
{
j=i+1;
d=a[j]-a[i];
s=a[i]+a[j];
cout<<d<<' '<<s<<' ';
l=j+1;r=n;
while(l<r)
{
m=l+((r-l)>>1);
if(a[m]<=s)l=m+1;
else r=m-1;
}
while(a[l]>s)l--;
cout<<l<<' ';
nn=l;
l=j+1;r=n;
while(l<r)
{
m=l+((r-l)>>1);
if(a[m]>=d)r=m;
else l=m+1;
}
while(a[r]<d)r++;
cout<<r<<'\n';
nn=nn-r+1;
if(nn>0)nr+=nn;
}
g<<nr;
return 0;
}