Pagini recente » Cod sursa (job #724460) | Cod sursa (job #2987586) | Cod sursa (job #2944501) | Cod sursa (job #3242112) | Cod sursa (job #63388)
Cod sursa(job #63388)
#include <cstdio>
#include <stdlib.h>
FILE *in = fopen("secventa.in","r"), *out = fopen("secventa.out","w");
typedef struct
{
int val;
int poz;
} temp;
int n,k,*a;
temp *b;
int nr=0;
int main()
{
fscanf(in, "%d", &n);
fscanf(in, "%d", &k);
a= (int *) malloc(n*sizeof(int));
b= (temp *) malloc(n*sizeof(temp));
for ( int i = 0; i < n; ++i )
{
fscanf(in, "%d", &a[i]);
if (i<k)
{
b[nr].val=a[i];
b[nr++].poz=i;
}
}
// for ( int i = k; i < n; ++i )
// {
//verific daca a[i] e mai mare decat vreun element ales
// int f=0;
// for (int j=0;j<nr;j++)
// if (a[i]>a[j])
// {
// f=1;
// break;
// }
// if (f)
// if (a[i]>b[0].val)
// {
// b[nr].val=a[i];
// b[nr++].poz=i;
// //elimin din lista daca e cazul
// for (int j=0;j<nr-2;j++)
// if (b[j].val<a[i] || (b[j].poz-i)>k)
// {
// b++;
// nr--;
// }
// }
// }
//
// printf("\n**\n");
// for (int j=0;j<nr;j++)
// printf("%d %d\n",b[j].val,b[j].poz);
// printf("\n**\n");
//
int first,last;
first=0;
last=k-1;
/*
for ( int i = k; i < n; ++i )
{
while (first <= last && b[first].poz <= i-k) first++;
while (last >= first && b[last].val >= a[i]) last--;
}
*/
printf("%d %d %d",b[first].poz,b[last].poz,b[first].val);
fprintf(out,"%d %d %d",b[first].poz,b[last].poz,b[first].val);
return 0;
}