Cod sursa(job #34237)

Utilizator robbyRobertino robert robby Data 20 martie 2007 14:08:14
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 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;
																								  }