Mai intai trebuie sa te autentifici.
Cod sursa(job #1412529)
| Utilizator | Data | 1 aprilie 2015 12:38:57 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.82 kb |
#include <iostream>
#include <fstream>
#include <cstdio>
#define FOR(a,b,c) for(int a=b; a<=c; a++)
#define ROF(a,b,c) for(int a=c; a>=b; a--)
#define REP(a, b) for(int a=0; a<=b; a++)
#define max(a, b) (a>b?a:b)
#define min(a, b) (a<b?a:b)
#define MOD 666013
#define DIM 5000010
#define infile "deque.in"
#define outfile "deque.out"
using namespace std;
int n, i, p, u, v[DIM], d[DIM], k;
long long s;
int main(){
freopen(infile, "r", stdin);
freopen(outfile, "w", stdout);
scanf("%d %d", &n, &k);
for(i=1; i<=n; i++)
scanf("%d", &v[i]);
p=1;
for(i=1; i<=n; i++)
{
if(d[p]==i-k)
p++;
while(v[i]<v[ d[u] ] && p<=u)
u--;
d[++u]=i;
if(i>=k)
s+=1LL*v[ d[p] ];
}
printf("%lld\n", s);
return 0;
}
