Cod sursa(job #263756)

Utilizator redkar23Dezactiveazama redkar23 Data 20 februarie 2009 19:43:00
Problema Deque Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 1.75 kb
#include <fstream>

using namespace std;

fstream f;
fstream g;
int n,k;
long a;
long x;
long min1[2];
long min2[2];
long sum;
long i;
long j;
int flag;

int main()
{
      min1[0] = min2[0] = 1000001;
   f.open("deque.in",fstream::in);
   g.open("deque.out",fstream::out);
    f >> n >> k;
   for(i=0;i<k;i++)
   {
     f >> a;
     flag=0;
     if(min1[0]>=a)
     {
        min1[0]=a;
        min1[1]=i;
        flag=1;
     }
     if(min2[0]>=a&&flag==0)
     {
        min2[0]=a;
        min2[1]=i;
   }
}
   sum+=min1[0];
   x=k;
   while(x<n)
   {
     f>>a;
      if(min1[1]<x-k+1)
        {
           if(min2[0]>=a)
               {
                  min1[0]=a;
                  min1[1]=x;             
               }   
           else
              {
               min1[0]=min2[0];
                  min1[1]=min2[1];
                  min2[0]=a;
                  min2[1]=x;  
              }
        }   
       else
         if(min2[1]<x-k+1)
         {
              if(min1[0]>=a)
               {
                   min2[0]=min1[0];
                   min2[1]=min1[1];            
                  min1[0]=a;
                  min1[1]=x;             
               }   
           else
              {
                  min2[0]=a;
                  min2[1]=x;  
              }               
         }
       else 
         {
            if(min1[0]>a)
              {
                min2[0]=min1[0];
                min2[1]=min1[1];
                min1[0]=a;
                min1[1]=x;           
              }        
              
         }
    sum+=min1[0];
     x++;        
   }        
   
   f.close();
   g << sum << "\n"; 
   g.close();    
    
    return 0;
}