Cod sursa(job #268927)

Utilizator warangeldinu sorin warangel Data 2 martie 2009 00:10:16
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<stdio.h>
void minim(int secv[500010],long k,int &min,long &minnr)
{
	long i;
   min=secv[1];
   minnr=1;
   for(i=2;i<=k;i++)
   	if(min>secv[i])
      	{min=secv[i];minnr=1;}
      else if(min==secv[i])
      	minnr++;
}
int main()
{
	FILE *fi,*fo;
   fi=fopen("secventa.in","r");
   fo=fopen("secventa.out","w");
   int min=-32000,nr,secv[100010],maxmin;
   long n,k,i,minnr,mins=1,exit=1;
   fscanf(fi,"%ld %ld",&n,&k);
   for(i=1;i<=k;i++)fscanf(fi,"%d",&secv[i]);
   minim(secv,k,min,minnr);
   maxmin=min;
   for(i=k+1;i<=n;i++)
   {
      fscanf(fi,"%d",&nr);
      if(secv[exit]==min)
      {
      	if(minnr==1)
         {
         	secv[exit]=nr;
         	exit=(exit!=k)?exit+1:1;
            minim(secv,k,min,minnr);
            if(min>maxmin)
            {
            	maxmin=min;
               mins=i-k+1;
            }
         }
         else
         {
         	minnr--;
          	secv[exit]=nr;
          	exit=(exit!=k)?exit+1:1;
         }
      }
      else
      {
      	secv[exit]=nr;
      	exit=(exit!=k)?exit+1:1;
      }
   }
   fprintf(fo,"%ld %ld %d",mins,mins+k-1,maxmin);
   return 0;
}