Pagini recente » Cod sursa (job #1520676) | Cod sursa (job #353313) | Cod sursa (job #364555) | Cod sursa (job #2325040) | Cod sursa (job #1101432)
#include <fstream>
#include <deque>
using namespace std;
struct SIR {
long long poz,val;
};
deque <SIR> d;
void scoate(int val){
while( d.empty()==0 && d.back().val>=val ){
d.pop_back();
}
}
int main()
{
ifstream in("deque.in");
ofstream out("deque.out");
long long a, n, k, mn, suma= 0;
SIR nr;
in>>n>>k;
for(int i=0; i<k; i++){
in>>a;
scoate( a );
nr.poz= i;
nr.val= a;
d.push_back( nr );
}
mn= d.front().val;
suma+= mn;
for(int i=k; i<n; i++){
in>>a;
if( d.front().poz<=i-k ) d.pop_front();
scoate( a );
nr.poz= i;
nr.val= a;
d.push_back( nr );
mn= d.front().val;
suma+= mn;
}
out<<suma<<'\n';
in.close();
out.close();
return 0;
}