Pagini recente » Cod sursa (job #2574625) | Cod sursa (job #77369) | Cod sursa (job #817675) | Cod sursa (job #774358) | Cod sursa (job #1103577)
#include <fstream>
using namespace std;
#define Nmax 500010
ifstream f("secventa.in");
ofstream g("secventa.out");
int Deque[Nmax],A[Nmax],i,n,k,Front,Back,Pozi,Pozf,S=-(1<<30),nr,pozitiv;
char caractere[Nmax*7];
int main()
{
f>>n>>k;
f.getline(caractere,2);
f.getline(caractere,Nmax*7);
i=0; n=0;
while (caractere[i]!='\0')
{
if (caractere[i]>='0' && caractere[i]<='9') nr=nr*10+(caractere[i]-'0');
else if (caractere[i]=='-') pozitiv=0;
else if (caractere[i]==' ')
{
A[++n]=nr;
if (!pozitiv) A[n]=-A[n];
pozitiv=1; nr=0;
}
i++;
}
A[++n]=nr; if (!pozitiv) A[n]=-A[n];
Front=1; Back=0;
for (i=1;i<=n;i++)
{
while (Front<=Back && A[i]<=A[Deque[Back]]) Back--;
Deque[++Back]=i;
if (Deque[Front]==i-k) Front++;
if (i>=k)
{
if (A[Deque[Front]]>S)
{
S=A[Deque[Front]];
Pozi=i-k+1; Pozf=i;
}
}
}
g<<Pozi<<" "<<Pozf<<" "<<S;
}