#include #include #include #include #include #include using namespace std; int *vect = NULL; int *vectT = NULL; int n = -1; int k = -1; int best = -1; int intervallo = 2; void readInput() { ifstream fin( "input.txt" ); assert( fin ); fin >> n; fin >> k; vect = (int*)(malloc(sizeof(int)*n)); vectT = (int*)(malloc(sizeof(int)*n)); for(int i = 0; i < n; i++) { vect[i] = 0; vectT[i] = 0; } for(int i=0; i< n; i++) { fin >> vect[i]; } fin.close(); } void writeOutput() { ofstream fout( "output.txt" ); assert( fout ); fout << best << endl; fout.close(); } int maxInVectT(int size) { int tmp = 0; for (int i=0; i < size; i++) if(vectT[tmp] < vectT[i]) tmp = i; return tmp; } int stampa (int size) { for (int i=0; i < size; i++) printf("%d\t", vectT[i]); printf("\n"); } void somme(int size, int a) { if (size > 1) { int tmp = maxInVectT(size); if (intervallo >= k) if (best < vectT[tmp]) best = vectT[tmp]; for(int i = 0; i < size; i++) vectT[i] = vectT[i] + vect[i+a]; somme(size-1, a+1); intervallo++; } } int main (void) { readInput(); for (int i = 0; i < n-1; i++) vectT[i] = vect[i] + vect[i+1]; somme(n-1, 2); printf("%d\n", best); writeOutput(); return 0; }