Cod sursa(job #558154)

Utilizator andrei_vs2009Cozma Andrei andrei_vs2009 Data 17 martie 2011 09:32:33
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<iostream>

using namespace std;

int a[5000001],q[5000001],n,k,pr,ul,minim,poz,min1[5000001];
long long suma;

void Citire()
{
	ifstream f ("deque.in");
	f>>n>>k;
	for (int i=1;i<=n;i++)
		f>>a[i];
	f.close();
}

int Minim(int x , int y)
{
	int i,minim1=q[x],pz=x;
	for (i=x;i<=y;i++)
		if (q[i]<minim1) {minim1=q[i];pz=i;}
	return pz;
}
void Deque()
{
	int i;
	pr=ul=1;
	minim=a[1];
	suma+=minim;
	poz=1;
	for (i=1;i<=k;i++)
		{
			q[ul++]=a[i];
			if (minim>a[i]) {minim=a[i];poz=i;}
		}
	for (i=k+1;i<=n;i++)
		{
			if (a[i]<=minim) {q[ul++]=a[i];minim=a[i];poz=i;}
			else 
			{
				q[ul++]=a[i];
				if (poz==pr) 
					{
						poz=Minim(pr+1,ul-1);
						minim=q[poz];
					}
					
				
			}
		suma+=minim;pr++;
		}
}

int main()
{
	Citire();
	Deque();
	ofstream f("deque.out");
	f<<suma<<"\n";
	f.close();
	return 0;
}