Cod sursa(job #1208218)

Utilizator tudi98Cozma Tudor tudi98 Data 15 iulie 2014 02:22:18
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <deque>
#include <vector>
using namespace std;

struct P{int x,y;};
deque<P> D;
vector<int> v;
string s;

int main(){

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

    int n,k,I,J;
    int Val=-30001;
    f >> n >> k;
    f.get();
    getline(f,s);
    ///////////////////////////citire
    int x=0;
    int semn=1;
    for(int i=0;i<int(s.size());i++){
        if(s[i]==' '){
            v.push_back(x*semn);
            semn=1;
            x=0;
        }
        else{
            if(s[i]=='-'){
                semn=-1;
            }
            else if(s[i]>='0' && s[i]<='9') x=x*10+(s[i]-'0');
        }
    }
    ///////////////////////////citire
    for(int i=0;i<n;i++){
        while(!D.empty() && v[i]<D.back().x) D.pop_back();
        P a;
        a.x=v[i];
        a.y=i+1;
        D.push_back(a);
        if(i-D.front().y+2>k) D.pop_front();
        if(i+1>=k && D.front().x>Val){
            Val=D.front().x;
            J=i+1;
            I=i-k+2;
        }
    }
    g << I << " " << J << " " << Val << "\n";
}