Mai intai trebuie sa te autentifici.
Cod sursa(job #3260561)
| Utilizator | Data | 2 decembrie 2024 19:28:24 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.96 kb |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N_MAX = 5e6 + 1;
int N, K;
int v[N_MAX];
ll sum;
void SetInput(string name)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
freopen((name + ".in").c_str(), "r", stdin);
freopen((name + ".out").c_str(), "w", stdout);
}
deque<int> mini; // always sorted
int main()
{
SetInput("deque");
cin >> N >> K;
for(int i = 0; i < K; i++)
{
cin >> v[i];
while( !mini.empty() && v[i] < mini.front())
mini.pop_front();
mini.push_front(v[i]);
}
sum = mini.back();
for(int i = K; i < N; i++)
{
cin >> v[i];
while( !mini.empty() && v[i] < mini.front())
mini.pop_front();
mini.push_front(v[i]);
if(mini.back() == v[i-K])
mini.pop_back();
sum += (ll) mini.back();
}
cout << sum;
return 0;
}
