Cod sursa(job #2048801)

Utilizator EdyOnuEdy Onu EdyOnu Data 26 octombrie 2017 16:33:38
Problema Secv Scor 0
Compilator java Status done
Runda Arhiva de probleme Marime 1.58 kb
//package com.company;

import java.io.*;
import java.util.*;

public class Main {

    private static Set< Integer > set = new HashSet<>();
    private static List< Integer > elements = new ArrayList<>();

    private static void readData() throws IOException{

        Scanner s = new Scanner(new BufferedReader(new FileReader("C:\\Users\\Onu Edy\\Desktop\\secv\\src\\secv.in")));

        int N = s.nextInt();

        while(N-- > 0) {
            elements.add(s.nextInt());set.add(elements.get(elements.size() - 1));
        }
    }

    private static  int answer(){

        int[] length = new int[elements.size() + 1];
        int[] choice = new int[elements.size() + 1];

        PriorityQueue < Integer > q = new PriorityQueue<>((x,y)->x.compareTo(y));

        for(int j = elements.size() - 1; j >= 0; --j) {
            length[j] = 1;choice[j] = j;

            for (int i = j + 1; i < elements.size(); ++i) {

                if (elements.get(j) >= elements.get(i) || length[j] > length[i] + 1) continue;

                if (length[j] < length[i] + 1) {
                    length[j] = length[i] + 1;choice[j] = choice[i];continue;
                }

                choice[j] = Math.min(choice[i], choice[j]);
            }

            if(length[j] == set.size())q.add(choice[j] - j + 1);
        }

        return q.remove();
    }

    public static void main(String[] args) throws  IOException {
        readData();
        BufferedWriter sout = new BufferedWriter(new FileWriter("secv.out"));
        sout.write(answer()+"");sout.close();
    }
}