Cod sursa(job #1728259)

Utilizator TimoteiCopaciu Timotei Timotei Data 12 iulie 2016 16:39:20
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
int n, k, number, D[500005], first, last, bestSol = -(1 << 30), bestPoz, poz[500005], semn, p;
string s;
void solve()
{
    ifstream fin("secventa.in");
    ofstream fout("secventa.out");
    fin >> n >> k;
    fin.get();
    getline(fin, s);
    s.insert(s.end(), 1, ' ');
    for(int i = 0; i < s.size(); ++i)
    if(s[i] == ' '){
        p++;
        number *= semn;
    while(first <= last && number <= D[last])
             last--;
    D[++last] = number;
    poz[last] = p;
    if(p - poz[first] >= k) ++first;
    if(p >= k && D[first] > bestSol){
        bestSol = D[first];
        bestPoz = p;
      }
    semn = 1;
    number = 0;
    }
    else if(s[i] == '-')
        semn = -1;
    else
        number = number * 10 + (s[i] - '0');

    fout << bestPoz - k + 1 << ' ' << bestPoz << ' ' << bestSol;
}
int main()
{
    solve();
    return 0;
}