Mai intai trebuie sa te autentifici.
Cod sursa(job #2033643)
| Utilizator | Data | 7 octombrie 2017 09:33:45 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.76 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
const int VSIZE = 5000005;
deque < int > Q;
int N,K;
int a[VSIZE];
long long ans;
inline void Read()
{
fin >> N >> K;
for(int i = 1; i <= N; i++) {
fin >> a[i];
}
}
inline void ADD(int x)
{
while(!Q.empty() && a[x] <= a[Q.back()]) Q.pop_back();
Q.push_back(x);
}
inline void Solve()
{
int i;
for(i = 1; i <= K; i++) ADD(i);
ans += a[Q.front()];
for(i; i <= N; i++) {
while(!Q.empty() && i - Q.front() >= K) Q.pop_front();
ADD(i);
ans += a[Q.front()];
}
fout << ans << "\n";
fout.close();
}
int main()
{
Read();
Solve();
return 0;
}
