Втората
#include <stdio.h>
#define countof(a) (sizeof(a)/sizeof(*a))
void main() {
int a[] = { 4,3,5,2,1 };
int low[countof(a)], high[countof(a)];
int i, j, lprod, hprod;
for(lprod = hprod = 1, i = 0, j = countof(a) - 1; i < countof(a); i++, j--) {
low[i ] = lprod;
high[j] = hprod;
lprod *= a[i ];
hprod *= a[j];
}
for(i = 0; i < countof(a); i++)
printf("%d,", low[i ]*high[i ]);
}
Първата
#include <stdio.h>
#define countof(a) (sizeof(a)/sizeof(*a))
void main() {
int a[] = { 10,1,4,2,1,8,3,5,6 };
int low[countof(a)], high[countof(a)];
int i, j, lidx, hidx;
for(lidx = 0, i = lidx+1, hidx = countof(a) - 1, j = hidx-1; i < countof(a) - 1; i++, j--) {
low[i ] = lidx;
high[j] = hidx;
if(a[i ] < a[lidx]) lidx = i;
if(a[j] > a[hidx]) hidx = j;
}
for(i = 1; i < countof(a) - 1; i++) {
if(a[low[i ]] < a[i ] && a[i ] < a[high[i ]])
printf("a[%d]=%d < a[%d]=%d < a[%d]=%d\n", low[i ], a[low[i ]], i, a[i ], high[i ], a[high[i ]]);
}
}