Cod sursa(job #1712140)
Utilizator | Data | 2 iunie 2016 10:03:13 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
const int N=5000001;
int v[N],dq[N],st,dr=-1,n,k,i;
void stanga (int i)
{
if (dq[st]==i-k)
st++;
}
void dreapta (int i)
{
while (st<=dr && v[i]<=v[dq[dr]])
{
dr--;
}
dq [++dr]=i;
}
int main ()
{
long long s=0;
f>>n>>k;
for (i=1; i<=n; i++)
f>>v[i];
for (i=1; i<=n; i++)
{
stanga (i);
dreapta(i);
if (i>=k)
s+=v[dq[st]];
}
g<<s;
return 0;
}