Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.*;
- public class NiceString {
- public static void main(String[] args) throws IOException {
- BufferedReader bufferedReader = new BufferedReader(new FileReader("input.txt"));
- String line = bufferedReader.readLine();
- List<Long> input = new ArrayList<>();
- while (!(line == null)) {
- input.add(Long.parseLong(line));
- line = bufferedReader.readLine();
- }
- Long wordQuantity = input.get(0);
- List<Long> counts = new ArrayList<>();
- for (int i = 1; i < input.size(); i++) {
- counts.add(input.get(i));
- }
- Long firstMin = counts.get(0);
- for (Long n : counts) {
- if (n != 0 && n < firstMin) {
- firstMin = n;
- }
- }
- long firstInput = counts.get(0);
- long sum = 0;
- long count = 0;
- long first = Integer.MAX_VALUE;
- for (int i = 0; i < counts.size(); i++) {
- if ((counts.get(i)) < first && counts.get(i) != 0) {
- first = counts.get(i);
- }
- }
- for (int i = 0; i < counts.size(); i++) {
- if (counts.get(i) != 0) {
- Long newCount = counts.get(i) - first;
- counts.set(i, newCount);
- }
- }
- if (wordQuantity == 1) {
- System.out.println(0);
- } else if (new HashSet<>(counts).size() == 1) {
- System.out.println((wordQuantity - 1) * (firstInput));
- } else {
- do {
- Long min = Long.MAX_VALUE;
- for (Long integer : counts) {
- if (integer < min && integer != 0) {
- min = integer;
- }
- }
- List<Long> length = new ArrayList<>();
- long l = 0;
- for (int i = 0; i < counts.size() - 1; i++) {
- if (counts.get(i) > 0 && counts.get(i + 1) > 0) {
- l = l + 1;
- } else {
- l = 0;
- }
- length.add(l);
- }
- for (int i = 0; i < length.size() - 1; i++) {
- Long subCount = 0l;
- if ((length.get(i) > 0 && length.get(i + 1) == 0)) {
- subCount = length.get(i);
- sum = sum + (subCount * min);
- }
- }
- long last = length.get(length.size() - 1);
- if (((length.get(length.size() - 1)) > 0) && (last > 0)) {
- last = last * min;
- };
- sum = sum + last;
- count = count + 1;
- for (int i = 0; i < counts.size(); i++) {
- if (counts.get(i) != 0) {
- Long newCount = counts.get(i) - min;
- counts.set(i, newCount);
- }
- }
- } while (counts.stream().reduce(0L, Long::sum) != 0);
- System.out.println((first * (wordQuantity-1)) + sum);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment