Cod sursa(job #63388)

Utilizator chermanCorina Herman cherman Data 28 mai 2007 11:08:59
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#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;

}