Pagini recente » Cod sursa (job #1248068) | Cod sursa (job #2547568) | Istoria paginii utilizator/cajum | Cod sursa (job #338085) | Cod sursa (job #1593595)
#include <fstream>
#define nmax 50005
#define negValue -25005
using namespace std;
ifstream fin("secv2.in");
ofstream fout("secv2.out");
int n, k, sp[nmax];
struct noName {
int value;
int where;
} min_to[nmax], values[nmax];
void minimum() {
for (int i = 1; i <= n; ++i) {
if (min_to[i - 1].value < sp[i]) {
min_to[i].value = min_to[i - 1].value;
min_to[i].where = min_to[i - 1].where;
}
else {
min_to[i].value = sp[i];
min_to[i].where = i;
}
}
}
void read_input() {
fin >> n >> k;
for (int i = 1; i <= n; ++i) {
int x;
fin >> x;
sp[i] = sp[i - 1] + x;
}
}
void motor_all() {
int o = 0;
for (int i = k; i <= n; ++i) {
int pivot = min_to[i - k].value;
values[i].value = sp[i] - pivot;
values[i].where = min_to[i - k].where + 1;
}
int mx = negValue;
for (int i = k; i <= n; ++i)
(values[i].value > mx)? mx = values[i].value: true;
for (int i = k; i <= n; ++i)
if (mx == values[i].value) {
fout << values[i].where << " " << i << " " << values[i].value;
return;
}
}
int main()
{
read_input();
minimum();
motor_all();
return 0;
}