Cod sursa(job #2682747)

Utilizator cristi_macoveiMacovei Cristian cristi_macovei Data 9 decembrie 2020 15:19:57
Problema Secv Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <algorithm>

const int NMAX = 5e3;

int n;

int a[1 + NMAX];

std::pair<int, int> aux[1 + NMAX];

int last[1 + NMAX];

void read() {
  std::ifstream in("secv.in");

  in >> n;

  for (int i = 1; i <= n; ++i) {
    in >> a[i];
    aux[i] = {a[i], i};
  }
}

int main() {
  read();

  std::sort(aux + 1, aux + n + 1);

  int hash = 1;
  a[aux[1].second] = hash;

  for (int i = 2; i <= n; ++i) {
    if (aux[i].first > aux[i - 1].first)
      ++hash;

    a[aux[i].second] = hash;
  }

  int mx_len = -1;

  for (int i = 1; i <= n; ++i) {
    if (a[i] == 1)
      last[1] = i;

    if (last[a[i] - 1] != 0) {
      last[a[i]] = last[a[i] - 1];
      if (a[i] == hash)
        mx_len = std::max(mx_len, i - last[a[i]] + 1);
    }
  }

  std::ofstream out("secv.out");
  out << mx_len << '\n';
  return 0;
}