Cod sursa(job #2591956)

Utilizator mirceamaierean41Mircea Maierean mirceamaierean41 Data 31 martie 2020 18:48:31
Problema Secv Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <algorithm>
#include <set>
#include <limits.h>
using namespace std;

ifstream fin("secv.in");
ofstream fout("secv.out");

const int NMAX = 5003;
int n, a, b[NMAX], c[NMAX], maxi, ind_st;

set<int> nr;

int main()
{
	fin >> n;
	fill(b + 1, b + n + 1, INT_MAX);

	for (int i = 1; i <= n; ++i)
	{
		fin >> a;
		nr.insert(a);
		c[i] = lower_bound(b, b + n + 1, a) - b;
		if (c[i] > maxi)
		{
			maxi = c[i];
			ind_st = i;
		}
		b[c[i]] = a;
	}

	if (maxi != nr.size())
	{
		fout << "-1\n";
		return 0;
	}
	for (int i = ind_st; i; --i)
	{
		if (c[i] == maxi)
		{
			--maxi;
			if (maxi == 0)
			{
				fout << ind_st - i + 1 << "\n";
				return 0;
			}
		}
	}
	return 0;
}