Cod sursa(job #3250698)

Utilizator BiancaPatrulescuBianca Patrulescu BiancaPatrulescu Data 23 octombrie 2024 10:17:46
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
 #include <fstream>
#include <deque>
using namespace std;
 ifstream in("deque.in");
  ofstream out("deque.out");
 int v[5000001];
 deque <int> d;
 
 int main(){
   int n,k; in>>n>>k;
   for(int i=1;i<=n;i++){
     in>>v[i];
   }
   long long s=0;
   
   
      d.push_back(1);
     if(k==1)s=s+v[1];
     
     for(int i =2; i <=n; i++){
       //  d[p]........d[u] ( d[u]==i-1    )
       //  d[p]....d[u] apartin  de la i-k ......i-1 
       //  v[ d[p]] minimul
       // apare v[i]
        if(d.front() <= i-k) d.pop_front();
        
       while(!d.empty() && v[d.back()]>=v[i])  d.pop_back();
       
       d.push_back(i);
       
       if(i>=k)s=s+v[d.front()];
      
     }
   
   out<<s;
     return 0;
     
 
 
 
  
  
}