Pagini recente » Cod sursa (job #1657174) | Monitorul de evaluare | Cod sursa (job #797725) | Monitorul de evaluare | Cod sursa (job #1371087)
#include <iostream>
#include <stdio.h>
#include <deque>
#include <algorithm>
using namespace std;
int v[5000005];
FILE *f = fopen( "deque.in", "r" );
FILE *g = fopen( "deque.out", "w" );
int main()
{
int n, k;
long long int suma = 0;
deque<int> q;
/* read data */
fscanf( f, "%d%d", &n, &k );
for( int i = 0; i < n; i++ )
{
fscanf( f, "%d", &v[i] );
}
/* fill up deque and sort it */
for( int i = 0; i < k; i++ )
{
q.push_back( v[i] );
}
sort( q.begin(), q.end() );
suma += q.front();
for( int pas = 1; pas <= n-k; pas++ )
{
if( q.front() == v[pas-1] )
{
q.pop_front();
}
while( q.back() > v[k+pas-1] && !q.empty() )
{
q.pop_back();
}
q.push_back( v[k+pas-1] );
suma += q.front();
}
fprintf( g, "%lld\n", suma );
fclose( f );
fclose( g );
return 0;
}