Pagini recente » Cod sursa (job #2330271) | Cod sursa (job #43044) | Cod sursa (job #821481) | Cod sursa (job #890366) | Cod sursa (job #27067)
Cod sursa(job #27067)
#include<stdio.h>
FILE* f= fopen("secventa.in", "rt");
FILE* g = fopen("secventa.out", "wt");
long int contor=0;
struct nod
{long int info;
nod* adr_urm;
nod* adr_ant;};
nod *primul,*ultimul;
void adauga(long int informatie)
{
if(!primul)
{
contor++;
primul=new nod;
primul->adr_urm=0;
primul->adr_ant=0;
primul->info=informatie;
ultimul=primul;
}
else
{
nod *aux;
aux=new nod;
aux->adr_urm=0;
aux->adr_ant=ultimul;
aux->info=informatie;
ultimul->adr_urm=aux;
ultimul=aux;
contor++;
}
}
void sterge_ultimul()
{contor--;
nod *aux=ultimul->adr_ant;
aux->adr_urm=0;
ultimul=aux;
if(contor==0)
ultimul=primul=0;}
void sterge_primul()
{
contor--;
nod *aux=primul->adr_urm;
aux->adr_ant=0;
primul=aux;
if(contor==0)
ultimul=primul=0;
}
int main()
{long int N,K,max;
fscanf(f,"%ld %ld",&N,&K);
for(long int i=1;i<=K;i++)
{long int numar;
fscanf(f,"%ld",&numar);
if(i!=1)
while(ultimul->info>numar)
sterge_ultimul();
adauga(numar);}
max=primul->info;
for(long int i=K+1;i<=N;i++)
{long int numar;
fscanf(f,"%ld",&numar);
contor++;
if(contor>K)
sterge_primul();
contor--;
while(ultimul->info>numar)
sterge_ultimul();
adauga(numar);
if(primul->info>max)
max=primul->info;
}
fprintf(g,"%ld",max);
fclose(f);
fclose(g);
return 0;
}