Pagini recente » Cod sursa (job #1014313) | Cod sursa (job #1649281) | Cod sursa (job #1295717) | Cod sursa (job #851433) | Cod sursa (job #154462)
Cod sursa(job #154462)
#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,Max,MaxSt,MaxSf;
MaxSt = St = 1;
MaxSf = Sf = K;
min = min2 = 30001;
for(i = 1; i <= Sf; i++)
if(Secv [i] < min)
Max = 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 <= Sf; i++)
if(Secv [i] < min2 && i != minp)
min2 = Secv [min2p = i];
}
}
else if(min2p == St - 1)
{
min2 = 30001;
for(i = St; i <= Sf; i++)
if(Secv [i] < min2 && i != minp)
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 > Max)
{
Max = min;
MaxSt = St;
MaxSf = Sf;
}
}
RezBaza = Max;
RezInceput = MaxSt;
RezSfarsit = MaxSf;
}
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;
}