Cod sursa(job #923537)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 23 martie 2013 17:43:50
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <deque>

using namespace std;

deque<int> v;

long long int vec[5000005];

int main()
{
    ifstream fin("deque.in");
    ofstream fout("deque.out");
    
    int n,k,i;
    fin>>n>>k;
    
    long long int sum=0;
    for(i=0;i<n;i++)
    {
       fin>>vec[i];
       //se sterge
       while(!v.empty())
         if(v.front()+k<=i)
          v.pop_front();
         else
           break;
       while(!v.empty())
         if(vec[v.back()]>vec[i])
          {
             v.pop_back();
          }
          else
             break;
       v.push_back(i);
       //se actualizeaza suma
       if(i>=k-1)
         sum+=vec[v.front()];              
    }
    
    fout<<sum<<'\n';
    
    fin.close();
    fout.close();
    //system("PAUSE");
    return 0;
}