Cod sursa(job #474146)

Utilizator marius.bucurBucur Marius - Ovidiu marius.bucur Data 2 august 2010 16:47:17
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<limits.h>
#include<queue>
#include<map>
#include<iostream>

using namespace std;

#define MAXN 500002
int a[MAXN];
int K;
int N;
int secv[MAXN];

void readf() {
	FILE* f = fopen("secventa.in", "r");
	int i = 0;
	fscanf(f, "%d %d", &N, &K);
	for(i = 0; i < N; i++) {
		fscanf(f, "%d", &a[i]);
	}
	fclose(f);
}

void ssolv() {
	map <int, bool> mmap;
	int i = 0;
	int smin = INT_MAX;
	int ii = 1, jj = K + 1;
	for(i = 0; i < K; i++) {
		mmap[a[i]] = true;
	}
	smin = (mmap.begin())->first;
	for(i = K; i < N; i++) {
		try {
			if(mmap.find(a[i-K]) != mmap.end())
				mmap.erase(mmap.find(a[i-K]));
			mmap[a[i]]=true;
			std::pair<int, bool> p = *mmap.begin();
			if(p.first > smin) {
				smin = p.first;
				jj = i + 1;
				ii = jj - K + 1;
			}
		}
		catch(...) {
			std::cout << "exception occured\n";
			return;
		}
	}
	FILE* f = fopen("secventa.out", "w");
	fprintf(f, "%d %d %d\n", ii, jj, mmap.begin()->first);
	fclose(f);
}

int main() {
	readf();
	ssolv();
}