Cod sursa(job #2044462)

Utilizator alexoloieriAlexandru Oloieri alexoloieri Data 21 octombrie 2017 10:17:24
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <queue>

using namespace std;
FILE *fin=fopen("secventa.in","r");
FILE *fout=fopen("secventa.out","w");

struct el{
    int poz;
};

deque <el> DQ;
int n, k;
int s;
int e[500001];

int minim=-30005, pozm;

int main()
{
el y;
int x;
fscanf(fin,"%d %d",&n,&k);
for (int i=1;i<=n;i++)
    {
     fscanf(fin,"%lld",&x);
     e[i]=x;
     y.poz=i;
     while (!DQ.empty())
        {
         if (e[DQ.back().poz]>=x)
            DQ.pop_back();
            else break;
        }
     DQ.push_back(y);
     if (DQ.front().poz==i-k)
         DQ.pop_front();
     if (i>=k)
        {
         if (e[DQ.front().poz]>minim)
            minim=e[DQ.front().poz], pozm=DQ.front().poz;
        }
    }
fprintf(fout,"%d %d %d",pozm, pozm+k-1, minim);
fclose(fin);
fclose(fout);
return 0;
}