Cod sursa(job #1593595)

Utilizator DeehoroEjkoliPop Darian DeehoroEjkoli Data 8 februarie 2016 18:43:55
Problema Secventa 2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#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;
}