Cod sursa(job #1270196)
| Utilizator | Data | 22 noiembrie 2014 11:31:27 | |
|---|---|---|---|
| Problema | Secventa | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.33 kb |
#include <stdio.h>
#include <deque>
std::deque <int> val,pos;
int main()
{
FILE *fin,*fout;
fin=fopen("secventa.in","r");
fout=fopen("secventa.out","w");
int n;
int k;
int nr;
fscanf(fin,"%d %d",&n,&k);
for(int i=1;i<k;i++)
{
fscanf(fin,"%d",&nr);
while(!val.empty()&&val.back()>nr)
{
val.pop_back();
pos.pop_back();
}
val.push_back(nr);
pos.push_back(i);
}
int max=0,maxp;
for(int i=k;i<=n;i++)
{
if(pos.front()<=i-k)
{
val.pop_front();
pos.pop_front();
}
fscanf(fin,"%d",&nr);
while(!val.empty()&&val.back()>nr)
{
val.pop_back();
pos.pop_back();
}
val.push_back(nr);
pos.push_back(i);
if(max<val.front())
{
max=val.front();
maxp=i;
}
}
fprintf(fout,"%d %d %d\n",maxp-k+1,maxp,max);
fclose(fin);
fclose(fout);
}
