_ums_

Строка

Feb 14th, 2023
1,159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.21 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import java.util.*;
  5.  
  6. public class NiceString {
  7.     public static void main(String[] args) throws IOException {
  8.         BufferedReader bufferedReader = new BufferedReader(new FileReader("input.txt"));
  9.         String line = bufferedReader.readLine();
  10.         List<Long> input = new ArrayList<>();
  11.         while (!(line == null)) {
  12.             input.add(Long.parseLong(line));
  13.             line = bufferedReader.readLine();
  14.         }
  15.         Long wordQuantity = input.get(0);
  16.         List<Long> counts = new ArrayList<>();
  17.         for (int i = 1; i < input.size(); i++) {
  18.             counts.add(input.get(i));
  19.         }
  20.         Long firstMin = counts.get(0);
  21.         for (Long n : counts) {
  22.             if (n != 0 && n < firstMin) {
  23.                 firstMin = n;
  24.             }
  25.         }
  26.         long firstInput = counts.get(0);
  27.         long sum = 0;
  28.         long count = 0;
  29.         long first = Integer.MAX_VALUE;
  30.         for (int i = 0; i < counts.size(); i++) {
  31.             if ((counts.get(i)) < first && counts.get(i) != 0) {
  32.                 first = counts.get(i);
  33.             }
  34.         }
  35.         for (int i = 0; i < counts.size(); i++) {
  36.             if (counts.get(i) != 0) {
  37.                 Long newCount = counts.get(i) - first;
  38.                 counts.set(i, newCount);
  39.             }
  40.         }
  41.         if (wordQuantity == 1) {
  42.             System.out.println(0);
  43.         } else if (new HashSet<>(counts).size() == 1) {
  44.             System.out.println((wordQuantity - 1) * (firstInput));
  45.         } else {
  46.             do {
  47.                 Long min = Long.MAX_VALUE;
  48.                 for (Long integer : counts) {
  49.                     if (integer < min && integer != 0) {
  50.                         min = integer;
  51.                     }
  52.                 }
  53.                 List<Long> length = new ArrayList<>();
  54.                 long l = 0;
  55.                 for (int i = 0; i < counts.size() - 1; i++) {
  56.                     if (counts.get(i) > 0 && counts.get(i + 1) > 0) {
  57.                         l = l + 1;
  58.                     } else {
  59.                         l = 0;
  60.                     }
  61.                     length.add(l);
  62.                 }
  63.                 for (int i = 0; i < length.size() - 1; i++) {
  64.                     Long subCount = 0l;
  65.                     if ((length.get(i) > 0 && length.get(i + 1) == 0)) {
  66.                         subCount = length.get(i);
  67.                         sum = sum + (subCount * min);
  68.                     }
  69.                 }
  70.                 long last = length.get(length.size() - 1);
  71.                 if (((length.get(length.size() - 1)) > 0) && (last > 0)) {
  72.                     last = last * min;
  73.                 };
  74.                 sum = sum + last;
  75.                 count = count + 1;
  76.                 for (int i = 0; i < counts.size(); i++) {
  77.                     if (counts.get(i) != 0) {
  78.                         Long newCount = counts.get(i) - min;
  79.                         counts.set(i, newCount);
  80.                     }
  81.                 }
  82.             } while (counts.stream().reduce(0L, Long::sum) != 0);
  83.             System.out.println((first * (wordQuantity-1)) + sum);
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment