Pagini recente » Cod sursa (job #2902240) | Cod sursa (job #3228156) | Cod sursa (job #2516600) | Cod sursa (job #3243795) | Cod sursa (job #36410)
Cod sursa(job #36410)
# include <stdio.h>
const long int MAXN=500000;
struct {long int poz,val;} deq[MAXN+1];
long int front=1,back=1,n,k,sol,psol;
void add(long int a, long int poz)
{
long int i=back;
while (i>=front&&deq[i].val>a) i--;
deq[i+1].val=a;
deq[i+1].poz=poz;
back=i+1;
}
void citire()
{
FILE *f=fopen("secventa.in","r");
fscanf(f,"%ld%ld",&n,&k);
long int i,a;
for (i=1;i<=k-1;i++)
{
fscanf(f,"%ld",&a);
add(a, i);
}
for (i=k;i<=n;i++)
{
fscanf(f,"%ld",&a);
add(a, i);
if (deq[front].poz<i-k+1) front++;
if (deq[front].val>=sol||i==k)
{
sol=deq[front].val;
psol=i-k+1;
}
}
}
void scrie()
{
FILE *g=fopen("secventa.out","w");
fprintf(g,"%ld %ld %ld\n",psol,psol+k-1,sol);
fcloseall();
}
int main()
{
citire();
scrie();
return 0;
}