Cod sursa(job #47756)

Utilizator gigi_becaliGigi Becali gigi_becali Data 3 aprilie 2007 22:59:07
Problema Secventa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#include <set>
#include <string>
#include <cstdlib>
#define maxn 1<<19
using namespace std;

int x[maxn];
int n, m;
char t[maxn*8];
void citire()
{
	freopen("secventa.in", "r", stdin);
	scanf("%d %d\n", &n, &m);
	fread(t, sizeof(char), n*8, stdin);
	char *p;
	p=strtok(t, " ");
	x[1]=atoi(p);
	int i;
	for(i=2;i<=n;i++) 
	{
		p=strtok(0, " \n");
		x[i]=atoi(p);
	}
	
		//scanf("%d ", &x[i]);
}

void solve()
{
	int i, j;
	set<int> Q;
	int max=-1000000, pi=0, pf=m;
	//for(i=1;i<=n;i++) printf("%d ", x[i]);
	//printf("\n");
	
	for(i=1;i<m;i++) Q.insert(x[i]);
	
	
	for(i=m;i<=n;i++)
	{
		
		Q.insert(x[i]);
	
		int min=*Q.begin();
		if(min>max) max=min, pi=i-m+1, pf=i;
	//printf("%d %d %d\n", x[i], x[i-m+1], min);	
	//	for(set<int> ::iterator it=Q.begin();it!=Q.end();++it) printf("%d ", *it);
		//printf("\n");
		Q.erase(x[i-m+1]);
	}
	freopen("secventa.out", "w", stdout);
	printf("%d %d %d\n", pi, pf, max);
}


int main()
{
	citire();
	solve();
return 0;
}