Cod sursa(job #2652788)
| Utilizator | Data | 25 septembrie 2020 18:34:57 | |
|---|---|---|---|
| Problema | Deque | Scor | 60 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
const int MAXN=5000001;
long long sMin=0;
int A[MAXN],N,K;
int D[MAXN],p=1,u=0;
void calcul()
{
for(int i=1;i<=N;i++)
{
while(p<=u&&A[i]<=A[D[u]])
u--;
D[++u]=i;
if(D[p]==i-K) p++;
if(i>=K) sMin+=A[D[p]];
}
}
int main()
{
f>>N>>K;
for(int i=1;i<=N;i++)
f>>A[i];
calcul();
g<<sMin;
return 0;
}
