Cod sursa(job #1898581)

Utilizator feli2felicia iuga feli2 Data 2 martie 2017 09:41:58
Problema Secventa Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("secventa.in");
ofstream fout("secventa.out");

const int N=500005;
int D[N], In[N], mx=-300005, mxf, mxb, x, b, f, n, k;

int cauta(int x)
{
    int s=b-1;
    int d=f+1;
    while(s+1<d)
    {
        int m=(s+d)/2;
        if(D[m]<x)
            s=m;
        else
            d=m;
    }
    return d;
}

int main()
{
    fin>>n>>k;
    b=1;
    for(int i=1;i<=k;i++)
    {
        fin>>x;
        int j=cauta(x);
        D[j]=x;
        In[j]=i;
        f=j;
    }
    for(int i=k+1;i<=n;i++)
    {
        fin>>x;
        while(i-In[b]>=k)
            b++;
        int j=cauta(x);
        D[j]=x;
        In[j]=i;
        f=j;
        if(D[b]>mx)
        {
            mx=D[b];
            mxb=i-k+1;
            mxf=i;
        }
    }
    fout<<mxb<<" "<<mxf<<" "<<mx;
    return 0;
}