Cod sursa(job #1335085)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 4 februarie 2015 22:51:48
Problema Secventa 2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#define DIM 50010
using namespace std;

ifstream fin ("secv2.in" );
ofstream fout("secv2.out");

int n, m, i, j, k, ok, minim;
int v[DIM], w[3][DIM], maxim;
int sum, st, dr;

void SetUp(){
    fin >> n >> k;
    for(i = 1; i <= n; i ++){
        fin >> v[i];
        if(w[1][i-1] >= 0){
            w[1][i] = w[1][i-1] + v[i];
            w[2][i] = w[2][i-1] + 1;
        }
        else{
            w[1][i] = w[1][i-i] + v[i];
            w[2][i] = w[2][i-i] + 1;
        }
    }
    return;
}

void Code(){
    maxim = -(1<<30);
    for(i = k; i <= n; i ++)
        if(w[2][i] >= k && w[1][i] > maxim){
            maxim = w[1][i];
            st = i - w[2][i] + 1;
            dr = i;
        }
    for(i = 1; i <= k; i ++)
        sum += v[i];
    for(i = k+1; i <= n; i ++){
        if(maxim < sum){
            maxim = sum;
            st = i - k + 1;
            dr = i;
        }
        sum -= v[i-k];
        sum += v[i+0];
    }
    fout << st << " " << dr << " " << maxim;
    return;
}

int main(){
    SetUp();
    Code();
    return 0;
}