Cod sursa(job #1091766)

Utilizator vladradu2014Radu Vlad Alexandru vladradu2014 Data 25 ianuarie 2014 23:19:14
Problema Secventa Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <stdio.h>
#include <stdlib.h>

int cmin(int*v,int poz_start,int poz_end){
   register int i;
   int min=~0;
   for(i=poz_start;i<poz_end;i++) 
      if(v[i]<min)
         min=v[i];
   return min;
}

int main()
{
    
   FILE * fp;
   int k;
   int n;
   int i;
   int poz_start_max;
   int poz_end_max;
   int poz_start;
   int poz_end;
   int pseudomin;
   
   
   if((fp=fopen("secventa.in","r"))==NULL)
      return 1;
 
   fscanf(fp,"%d",&n);
   fscanf(fp,"%d",&k);
   int v[n];
   for(i=0;i<n;i++)
      fscanf(fp,"%d",&v[i]);
     
   fclose(fp);     
      
   poz_start=poz_start_max=0;
   poz_end=poz_end_max=k;
   int min=cmin(v,poz_start,poz_end);
   i=k;
   while(i<n){
       if(v[i]>min){
           min=v[i];
           ++poz_start;
           ++poz_end;
           poz_start_max=poz_start;
           poz_end_max=poz_end;
          
       }
       else if(v[i]==min){
            poz_end++;
            poz_end_max=poz_end;
            }
            else
               if(i<n-k){
                   poz_start=i+1;
                   poz_end=i+k;
                   pseudomin=4;
                   if(pseudomin>min){
                      poz_start_max=poz_start;
                      poz_end_max=poz_end;
                      min=pseudomin;
                   }
                   i+=k;
               }
       ++i;
   }
   
   if((fp=fopen("secventa.out","w"))==NULL)
      return 1;
      
   
      fprintf(fp,"%d",poz_start_max+1);
	  fprintf(fp,"%d",poz_end_max+1);
	  fprintf(fp,"%d",min);
   
   fclose(fp);
   
   return 0;
}