Cod sursa(job #1937932)

Utilizator adriannicolaeAdrian Nicolae adriannicolae Data 24 martie 2017 14:05:15
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <iostream>
#include <string.h>
#define maxn 500001
#define INF 0x3f3f3f3f

using namespace std;

ifstream f("secventa.in");
ofstream g("secventa.out");

char s[maxn*4];
int n, v[maxn], deq[maxn], k, x, maxim = -INF, m;
int st = 1, dr;

int main(){
    f >> n >> k;
    f.getline(s,0);
    f.getline(s,maxn*4);
    int d = 0, nr = 0, semn = 0, l = strlen(s);
    while(d < l){
        if(s[d] == ' ') ++d;
        else if(s[d] == '-') ++d, semn = 1;
        else if(s[d] >= '0' and s[d] <= '9'){
            while((s[d] >= '0' and s[d] <= '9')){
                nr = nr*10 + (s[d]-48);
                ++d;
            }
            if(semn) nr = -nr;
            v[++m] = nr;
            nr = 0;
            semn = 0;
        }
    }
    
    for(int i=1; i<=n; ++i){
        while(st <= dr && v[i] <= v[deq[dr]]) --dr;
        deq[++dr] = i;
        if(deq[st] == i-k) st++;
        if(i >= k && v[deq[st]] > maxim) x = i, maxim = v[deq[st]];
    }
    g << x - k + 1 << ' ' << x << ' ' << maxim << '\n';
}