Cod sursa(job #1881114)

Utilizator igroitaGroita Igor igroita Data 16 februarie 2017 10:23:32
Problema Deque Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
#include<deque>
#include<algorithm>
using namespace std;

ifstream cin("deque.in");
ofstream cout("deque.out");

long long n, S=0, k, mini1 = 10000010, poz1=1, mini2 = 10000010, poz2=0;
deque <long long> d;

int main(){
	cin>>n>>k;	
	long long x;
	
	for(int i=1; i<=k; ++i){
		cin>>x; d.push_back(x);
		if(x<mini1) mini1=x, poz1=i;
		else if(x<mini2 && i>poz1) mini2=x, poz2=i;
	}
	S+=mini1;	
	for(int i=k+1; i<=n; ++i){
		cin>>x; d.push_back(x); d.pop_front();
		if(poz1<i-k+1){
			if(x<mini2){
				mini1 = x; poz2=0; poz1=i; mini2= 10000010;
			}
			else{
				mini1 = mini2; poz1 = poz2; mini2 = 10000010; poz2=0;
			}
		}
		else if(x<mini1){
			mini1=x; poz1 =i; poz2=0;  mini2= 10000010;
		}
		else if(x<mini2){
			mini2= x; poz2 = i; 
		}
		S+=mini1;
		
	}

	cout<<S;

	return 0;
}