Cod sursa(job #811722)

Utilizator costel93FMI - Dumea Eduard Constantin costel93 Data 12 noiembrie 2012 21:07:50
Problema Deque Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <stdio.h>
#include <vector>

using namespace std;
typedef struct nod{long long info; nod *urm;}lst;

lst *prim, *ultim, *q, *r;

FILE *f=fopen("deque.in","r"), *g=fopen("deque.out","w");

void insert(long long int x)
{
	q=new lst;
	q->info=x;
	q->urm=NULL;
	ultim->urm=q;
	ultim=q;
}

void del()
{
	q=prim;
	prim=prim->urm;
	delete q;
}

int main()
{
	long long int n, i, x, k, min, s=0, j;
	
	fscanf(f, "%lld""%lld", &n, &k);
	fscanf(f, "%lld", &x);
	
	prim = new lst;
	ultim = new lst;
	prim->info = x;
	prim->urm=NULL;
	ultim=prim;
	
	min=x;
	
	for(i=1;i<k;i++)
	{
		fscanf(f, "%lld", &x);
		if(min>x) min=x;
		insert(x);
	}
	
	s+=min;
	
	for(i=1;i<=n-k;i++)
	{
		fscanf(f, "%lld", &x);
		
		if(x<=min) {
			del();
			insert(x);
			min=x;
		}
		else
			if(prim->info>min) {
				del();
				insert(x);
			}
			else {
				del();
				min=prim->info;
				insert(x);
				for(q=prim->urm;q!=NULL;q=q->urm)
				{
					if(min>q->info)
						min=q->info;
				}
			}
			
		s+=min;
		
	}
	
	fprintf(g, "%lld", s);
	
	return 0;
}