Cod sursa(job #2671439)
| Utilizator | Data | 12 noiembrie 2020 09:29:40 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <fstream>
using namespace std;
const int limit = 5e6+10;
int arr[limit], que[limit];
int main()
{
ifstream cin ("deque.in");
ofstream cout ("deque.out");
int n,k;
cin >> n >> k;
for (int i = 1; i <= n; i++)
cin >> arr[i];
int frnt = 1, bck = 0;
long long ans = 0;
for (int i = 1; i <= n; i++)
{
while (frnt <= bck && arr[i] <= arr[que[bck]])
bck--;
bck++;
que[bck]=i;
if (que[frnt]==i-k)
frnt++;
if (i>=k)
ans += arr[que[frnt]];
}
cout << ans;
return 0;
}
