Non l'ho provato, ma un codice simile dovrebbe funzionare ...

Ho assunto che il max non sia negativo

codice:
int actualFunc(int v[])
{
	return v[0]+v[1]+v[2]+v[3]+v[4]+v[5]+v[6];
}

int maxFunc(int v[], int h)
{
	int i, j, curr, max=0;
	int z[7];

	for(i=0; i<6; i++)
		for(j=i+1; i<7; i++)
		{
			memcpy(z, v, sizeof(int)*7);

			z[i] *= h; 
			z[j] *= h;

			curr = actualFunc(z);

			if(curr>max) max=curr;
		}

	return max;
}
Tu dal main dovrai chiamare la

maxFunc