Cod sursa(job #1964175)

Utilizator dragos231456Neghina Dragos dragos231456 Data 13 aprilie 2017 10:49:05
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque<int> poz,sec;
string s;
int n,k,x,mx=-30001,nr,i1[500003],rez;
bool ok;
int main()
{
    f>>n>>k; getline(f,s);
    getline(f,s);
    for(int i=0;i<s.size();++i)
    {
        if (s[i] == ' ')    continue;
        if (s[i] == '-')
        {
            x = 0;
            i++;
            while (s[i] != ' ' && i < s.size())
            {
                x = x * 10 - (s[i]-'0');
                i++;
            }
        }
        else if (s[i] != ' ')
        {
            x = 0;
            while (s[i] != ' ' && i < s.size())
            {
                x = x * 10 + (s[i]-'0');
                i++;
            }
        }
        nr++;
        if(!sec.empty() && poz.front()<=nr-k)
        {
            sec.pop_front();
            poz.pop_front();
        }
        ok=false;
        while(!sec.empty() && sec.back()>=x)
        {
            sec.pop_back();
            i1[nr]=poz.back()+1;
            ok=true;
            poz.pop_back();
        }
        if(!ok && !sec.empty()) i1[nr]=poz.back()+1;
        sec.push_back(x);
        poz.push_back(nr);
        if(i>=k)
        {
            if(sec.front()>mx)
            {
                mx=sec.front();
                rez=poz.front();
            }
        }
    }
    g<<i1[rez]<<' '<<i1[rez]+k-1<<' '<<mx;
    return 0;
}