Cod sursa(job #2644975)

Utilizator bem.andreiIceman bem.andrei Data 26 august 2020 16:59:01
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <bits/stdc++.h>

using namespace std;
ifstream r("secventa.in");
ofstream w("secventa.out");
deque<int>d;
int v[500002], n, k, maxim=-30001, xf, yf, seq_count = 0, sign, nr;
string str;
void read() {
    char c;
    getline(r, str);
    sign = 1;
    if(c == '-') {
        sign = -1;
    }
    if(isdigit(c) ) {
        nr *= 10;
        nr += c - '0';
    }
    for(int i = 0; i < (int)str.size(); ++i) {
        if(str[i] == ' ') {
            v[seq_count] = nr * sign;
            ++seq_count;
            sign = 1;
            nr = 0;
            continue;
        }
        if(str[i] == '-') {
            sign = -1;
        }
        if(isdigit(str[i]) ) {
            nr *= 10;
            nr += str[i] - '0';
        }
    }
    v[seq_count] = nr * sign;
}
int main()
{
    r>>n>>k;
    r.get();
    read();
    for(int i=0; i<n; i++)
    {
        if(i<k-1)
        {
            while(d.size()!=0 && v[i]<d.back())
            {
                d.pop_back();
            }
            d.push_back(v[i]);
        }
        else
        {
            if(i>=k && v[i-k]==d.front())
            {
                d.pop_front();
            }
            while(d.size()!=0 && v[i]<d.back())
            {
                d.pop_back();
            }
            d.push_back(v[i]);
            if(d.front()>maxim)
            {
                maxim=d.front();
                xf=i;
                yf=i-k+1;
            }
        }
    }
    w<<yf+1<<" "<<xf+1<<" "<<maxim;
    return 0;
}