Cod sursa(job #1128473)
| Utilizator | Data | 27 februarie 2014 17:15:20 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <fstream>
#include <deque>
#define NMAX 5000007
#define LL long long
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
deque< int > Deq;
int a[NMAX];
int n, k;
LL Ans;
int main(){
cin >> n >> k;
for(int i = 1; i <= n; ++i){
cin >> a[i];
while(! Deq.empty() && a[Deq.back()] > a[i])
Deq.pop_back();
Deq.push_back(i);
if(Deq.front() == i - k)
Deq.pop_front();
if(i >= k && ! Deq.empty())
Ans += (LL)a[Deq.front()];
}
cout << Ans;
return 0;
}
