Cod sursa(job #2206893)

Utilizator maria15Maria Dinca maria15 Data 24 mai 2018 10:03:48
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;

int n, i, p, u, k, d[500003], b, x, nr;
short v[500003], maxim = -30005;
char ok, s[3500001], minusu = 1;

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

int main(){
    fin>>n>>k;
    fin.get();
    fin.get(s, 3500000);
    for(i=0;s[i]!=0;i++){
        x = 0, ok = 0;
        if(s[i] == '-')
            minusu = -1;
        while(s[i] >= '0' && s[i] <= '9'){
            x = x*10 + s[i] - '0';
            i++;
            ok = 1;
        }
        if(ok == 1){
            v[++nr] = minusu*x;
            minusu = 1;
        }
    }
    p = u = 1;
    d[1] = 1;
    for(i=2;i<=n;i++){
        while(p <= u && v[i] < v[d[u]])
            u--;
        d[++u] = i;
        if(i - d[p] == k)
            p++;
        if(i >= k && v[d[p]] > maxim){
            maxim = v[d[p]];
            b = i;
        }
    }
    fout<<b-k+1<<" "<<b<<" "<<maxim;
    return 0;
}