Pagini recente » Cod sursa (job #3242136) | Cod sursa (job #2680222) | Cod sursa (job #744213) | Cod sursa (job #343803) | Cod sursa (job #609559)
Cod sursa(job #609559)
#include<fstream>
using namespace std;
const short nmax=800;
short a[nmax+3];
int k;
void qsort(int lb,int ub){
int i=lb,j=ub,p=a[(i+j)>>1];
do{
while(a[i]<p)++i;
while(a[j]>p)--j;
if(i<=j){
k=a[i]; a[i]=a[j]; a[j]=k; ++i; --j;
}
}while(i<=j);
if(j>lb)qsort(lb,j);
if(ub>i)qsort(i,ub);
}
int cautare_bin(int val,int left,int right){
int m;
while(left<right){
m=left+(right-left+1)/2;
if(a[m]<=val)left=m;
else right=m-1;
}
if(a[left]<=val) return left;
return left-1;
}
int main(void){
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int i,j,n,nr=0;
fin>>n;
for(i=0;i<n;++i)fin>>a[i]; fin.close();
qsort(0,n-1);
for(i=0;i<n-2;++i)
for(j=i+1;j<n-1;++j)
nr+=cautare_bin(a[i]+a[j],j+1,n-1)-j;
fout<<nr; fout.close();
return 0;
}