Cod sursa(job #2044486)

Utilizator alexoloieriAlexandru Oloieri alexoloieri Data 21 octombrie 2017 10:37:37
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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;
fscanf(fin,"%d %d",&n,&k);
for (int i=1;i<=n;i++)
    {
     fscanf(fin,"%d",&e[i]);
     y.poz=i;
     while (!DQ.empty())
        {
         if (e[DQ.back().poz]>e[i])
            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=i-k+1;
        }
    }
fprintf(fout,"%d %d %d\n",pozm, pozm+k-1, minim);
fclose(fin);
fclose(fout);
return 0;
}