Cod sursa(job #34233)

Utilizator robbyRobertino robert robby Data 20 martie 2007 13:56:41
Problema Secventa Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <stdlib.h>
#define nmax 500001
struct elem {int x,poz;};
elem a[nmax];
int in[nmax];

int compare(const void *a,const void *b)
{
  return (*(elem*)b).x-(*(elem*)a).x;
}

FILE *f,*g;
int main()
{
  long n,i,j,k,fin,y,x,max,ok,l,imax,w;
  f=fopen("secventa.in","rt");
  g=fopen("secventa.out","wt");
  fscanf(f,"%ld %ld\n",&n,&k);
  for (i=1;i<=n;i++)
    {
      fscanf(f,"%d",&in[i]);
      a[i].x=in[i];
      a[i].poz=i;
    }
  qsort(a+1,n,sizeof(elem),compare);

  fin=n;
  if (fin>150)
    fin=150;
  max=-30001;
  w=1;
  for (i=1;i<=fin&&w;i++)
    {
      y=a[i].poz;
      for (j=y-k+1;j<=y&&w;j++)
       if (j+k-1<=n)
	{
	  x=j+k-1;
	  ok=1;
	  for (l=j;l<=x;l++)
	    if (in[l]<a[i].x)
	      {
		ok=0;
		break;
	      }
	  if (ok)
	    {
	      max=a[i].x;
	      imax=j;
	      w=0;
	    }
	}
       else
	break;
    }
  fprintf(g,"%ld %ld %ld\n",imax,imax+k-1,max);
  fcloseall();
  return 0;
}