Pagini recente » Cod sursa (job #2291779) | Cod sursa (job #2291794) | Cod sursa (job #2896638) | Cod sursa (job #2977667) | Cod sursa (job #480171)
Cod sursa(job #480171)
#include <stdio.h>
int v[1000],max,pos;
void caut(int i,int j, int x)
{
if (i<=j) {
int m=(i+j)/2;
if (v[m]>x) caut(i,m-1,x);
else {
if (max<v[m] || (max==v[m] && m>pos)) {max=v[m]; pos=m;}
caut(m+1,j,x);
}
}
}
int main() {
FILE *f,*g;
f=fopen("nrtri.in","r");
g=fopen("nrtri.out","w");
int n;
fscanf(f,"%d",&n);
for (int i=0;i<=n-1;i++) fscanf(f,"%d",&v[i]);
//using namespace std;
//sort(v,v+n);
for (i=0;i<=n-2;i++)
for (int j=i+1; j<=n-1;j++)
if (v[i]>v[j]) {
int aux=v[i];
v[i]=v[j];
v[j]=aux;
}
int nr=0;
for (i=0;i<=n-3;i++)
for (int j=i+1;j<=n-2;j++) {
pos=-1; max=0;
caut(j+1,n-1,v[i]+v[j]);
if (pos-j>0) nr+=pos-j;
}
fprintf(g,"%d",nr);
fclose(g);
return 0;
}