Cod sursa(job #717424)

Utilizator dan.paulaDan Paula dan.paula Data 19 martie 2012 22:00:40
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
# include <fstream>
# include <iostream>
using namespace std;

void CitireFisier(long sir[], unsigned long &n, unsigned long &k)
{
	ifstream fin("secventa.in");
	fin >>n;
	fin >>k;
	unsigned long i;
	for (i=0;i<n;i++)
		fin >> sir[i];
	fin.close();
}

void ScriereFisier(unsigned long a, unsigned long b, long minim)
{
	ofstream fout("secventa.out");
	fout << a <<" " <<b <<" " <<minim;
	fout.close();
}

void PrelucrareSir(long sir[], unsigned long n, unsigned long k, unsigned long &minpoz, long &minsec)
{
	long minim;
	unsigned long i=0,j,poz;
	
	minsec = sir[0];
	minpoz = 0;
	for(i=1;i<k;i++)
	{
		if (sir[i]< minsec) 
		{
			minsec = sir[i];
			minpoz = i;
		}
	}
	i = minpoz + 1;
	while (i < n-k+1)
	{
		minim = sir[i];
		poz = i;
		for(j= i+1; j < k + i; j++)
		{
			if (sir[j]< minim) 
			{
				minim = sir[j];
				poz = j;
			}
		}
		if (minim > minsec)
		{
			minsec = minim;
			minpoz = poz;
		}
		i = poz+1;
	}
}

int main()
{
	long sir[50000];
	unsigned long n, k, minpoz=0;
	long minsec=0;

	CitireFisier(sir,n,k);
	PrelucrareSir(sir,n,k,minpoz,minsec);
	ScriereFisier(minpoz+1, minpoz+k, minsec);
	return 0;
}