Cod sursa(job #2046239)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 23 octombrie 2017 16:49:14
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
#include <deque>

using namespace std;

//ifstream fin("secventa.in");
//ofstream fout("secventa.out");
FILE *f;
FILE *g;

int n,k;
int a[500005];
int maxx=-50000;
int ssec,fsec;

deque <int> d;

void Read()
{
   //fin>>n>>k;
   f=fopen("secventa.in","r");

   fscanf(f,"%d",&n);
   fgetc(f);
   fscanf(f,"%d",&k);
   fgetc(f);
  for(int i=1; i<=n; ++i)
      { fscanf(f,"%d",&a[i]);
        fgetc(f);
      }

   fclose(f);
}

void Do()
{
  for(int i=1; i<=n; ++i)
  {
    while(!d.empty() && a[i]<=a[d.back()])
       d.pop_back();
    d.push_back(i);

    if(i-k==d.front()) d.pop_front();

    if(i>=k)
      if(a[d.front()]>maxx) { maxx=a[d.front()];
                              ssec=i-k+1;
                              fsec=i;
                            }
  }
}

void Print()
{
   //fout<<ssec<<' '<<fsec<<' '<<maxx<<'\n';
   g=fopen("secventa.out","w");

   fprintf(g,"%d %d %d\n",ssec,fsec,maxx);
   //fprintf(g,"%d",k);

   fclose(g);
}

int main()
{
    Read();
    Do();
    Print();

    return 0;
}