Pagini recente » Cod sursa (job #2421764) | Cod sursa (job #1337339) | Cod sursa (job #2292849) | Cod sursa (job #1949664) | Cod sursa (job #154470)
Cod sursa(job #154470)
#include<stdio.h>
int N,K,Secv[500001];
int RezInceput,RezSfarsit,RezBaza;
void citire()
{
FILE *f=fopen("secventa.in","r");
fscanf(f,"%d%d",&N,&K);
for(int i = 1; i <= N; i++)
fscanf(f,"%d",Secv + i);
fclose(f);
}
void solutie()
{
int min,minp,min2,min2p,St,Sf,i;
RezInceput = St = 1;
RezSfarsit = Sf = K;
min = min2 = 30001;
for(i = 1; i <= Sf; i++)
if(Secv [i] < min)
RezBaza = min = Secv [minp = i];
for(i = 1; i <= Sf; i++)
if(Secv [i] < min2 && i != minp)
min2 = Secv [min2p = i];
while(Sf < N)
{
St++;
Sf++;
if(minp == St - 1)
{
if(Secv [Sf] < min2)
{
min = Secv [minp = Sf];
}
else
{
min = min2;
minp = min2p;
min2 = 30001;
for(i = St; i < minp - 1; i++)
if(Secv [i] < min2)
min2 = Secv [min2p = i];
for(i = minp+1; i < Sf; i++)
if(Secv [i] < min2)
min2 = Secv [min2p = i];
}
}
else if(min2p == St - 1)
{
min2 = 30001;
for(i = St; i <= minp - 1; i++)
if(Secv [i] < min2)
min2 = Secv [min2p = i];
for(i = minp + 1; i <= Sf; i++)
if(Secv [i] < min2)
min2 = Secv [min2p = i];
}
else if(Secv [Sf] < min)
{
min2 = min;
min2p = minp;
min = Secv [minp = Sf];
}
else if(Secv [Sf] < min2)
min2 = Secv [min2p = Sf];
if(min > RezBaza)
{
RezBaza = min;
RezInceput = St;
RezSfarsit = Sf;
}
}
}
void afisare()
{
FILE *f=fopen("secventa.out","w");
fprintf(f,"%d %d %d",RezInceput,RezSfarsit,RezBaza);
fclose(f);
}
int main()
{
citire();
solutie();
afisare();
return 0;
}