Pagini recente » Cod sursa (job #2942519) | Cod sursa (job #3247529) | Cod sursa (job #1767220) | Cod sursa (job #674533) | Cod sursa (job #963320)
Cod sursa(job #963320)
/*#include<fstream>
using namespace std;
fstream in("deque.in",ios::in),out("deque.out",ios::out);
const int N=5000001;
int d[N],v[N],n,k,st=1,dr;
long long rez;
void stanga(int i){
if(i-d[st]==k)
st++;
}
void dreapta(int i){
while(st<=dr && v[i]<=v[d[dr]])
dr--;
}
int main()
{
in>>n>>k;
for(int i=1 ; i<=n ; i++){
in>>v[i];
}
int i=1;
for( ; i<=k ; i++){
dreapta(i);
d[++dr]=i;
}
rez+=v[d[st]];
for( ; i<=n ; i++){
stanga(i);
dreapta(i);
d[++dr]=i;
rez+=v[d[st]];
}
out<<rez;
return 0;
}*/
#include<fstream>
using namespace std;
fstream in ( "deque.in ", ios::in ),
out( "deque.out", ios::out);
int v[5000002], d[5000002], k, st=1, dr, n;
long long s;
void stanga ( int i ){
if( i-d[st] == k ){
st++;
}
}
void dreapta ( int i ){
while ( st<=dr && v[i]<=v[d[dr]]){
dr--;
}
}
int main(){
in >> n >> k;
for( int i=1 ; i<=n ; i++){
in >> v[i];
}
int i;
for( i=1 ; i<=k; i++) {
dreapta(i);
d[++dr]=i;
}
s+= v[d[st]];
for( i=k+1; i<=n; i++){
stanga(i);
dreapta(i);
d[++dr]=i;
s+= v[d[st]];
}
out<<s<<'\n';
return 0;
}