Cod sursa(job #63381)

Utilizator chermanCorina Herman cherman Data 28 mai 2007 08:45:26
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <cstdio>
#include <stdlib.h>

FILE *in = fopen("secventa.in","r"), *out = fopen("secventa.out","w");

    int n,k,*a;
    int *b,nr=0;

int pozitia(int x)
{
    for ( int i = 0; i < n; ++i )
     if (a[i]==x) return i;
    return -1;
}
int main()
{
    fscanf(in, "%d", &n);
    fscanf(in, "%d", &k);

    a= (int *) malloc(n*sizeof(int));
    b= (int *) malloc(n*sizeof(int));
    for ( int i = 0; i < n; ++i )
    {
        fscanf(in, "%d", &a[i]);
        if (i<k)
           b[nr++]=a[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)
       {
        b[nr++]=a[i];
        //elimin din lista daca e cazul
       for (int j=0;j<nr-2;j++)
         if (a[j]<a[i] || pozitia(a[j])-pozitia(a[i])>k)
            {
                b++;
                nr--;
            }
       }
   }

//  printf("\n**\n");
//  for (int j=0;j<nr;j++)
//   printf("%d ",b[j]);
//  printf("\n**\n");
//   printf("%d %d %d",pozitia(b[0])+1,pozitia(b[nr-1])+1,b[0]);
   fprintf(out,"%d %d %d",pozitia(b[0])+1,pozitia(b[nr-1])+1,b[0]);
   return 0;
}