Cod sursa(job #2281318)

Utilizator danielsociuSociu Daniel danielsociu Data 11 noiembrie 2018 23:02:44
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <deque>
#include <string>
std::ifstream cin("secventa.in");
std::ofstream cout("secventa.out");
#define maxn 500005
int v[maxn],n,k;
std::deque<int> dequ;
std::string s;

int main()
{
    int ind,sol=-55555,i,t,poz=0;
    cin>>n>>k;
    cin.get();
    getline(cin,s);
    for(i=0;i<s.size();i++){
        t=0;
        if(s[i]=='-'){
            i++;
            while(s[i]>='0'&&s[i]<='9'){
                t=t*10+('0'-s[i]);
                i++;
            }
            v[++poz]=t;
        }
        else
            if(s[i]>='0'&&s[i]<='9'){
                while(s[i]>='0'&&s[i]<='9'){
                    t=t*10+(s[i]-'0');
                    i++;
            }
            v[++poz]=t;
        }
    }
    for(i=1;i<=n;i++){
        while(!dequ.empty()&&v[i]<v[dequ.back()])
            dequ.pop_back();
        dequ.push_back(i);
        if(i-k==dequ.front())
            dequ.pop_front();
        if(i>=k&&sol<v[dequ.front()])
            sol=v[dequ.front()],ind=dequ.back();
    }
    cout<<ind-k+1<<' '<<ind<<' '<<sol;
    return 0;
}