Pagini recente » Cod sursa (job #2533043) | Cod sursa (job #1809110) | Cod sursa (job #3173914) | Cod sursa (job #3237882) | Cod sursa (job #2489814)
#include <deque>
#include <vector>
#include <fstream>
using namespace std;
deque< int > deq;
long long n, k, ans;
vector< int >v;
ifstream fin("deque.in");
ofstream fout("deque.out");
int main()
{
fin >> n >> k;
for(int i = 1 ; i <= n ; i++)
{
int x;
fin >> x;
v.push_back( x );
}
for( int i = 0 ; i < k - 1 ; i++ )
{
while( !deq.empty() && v[ deq.back() ] > v[ i ] )
deq.pop_back();
deq.push_back( i );
}
/// indexam de la 0
for(int i = k - 1 ; i < v.size() ; i++ )
{
/// numarul a iesit din secventa sliding-window
if( i - deq.front() == k )
deq.pop_front();
while( !deq.empty() && v[ deq.back() ] > v[i] )
deq.pop_back();
deq.push_back( i );
/// miniul se va afla in deq.front()
ans += v[ deq.front() ];
}
fout << ans;
}