Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.85 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.util.Scanner;
  3. import java.io.FileWriter;
  4. import java.io.FileReader;
  5. import java.util.Arrays;
  6.  
  7. /**
  8.  * Входные данные:<br/>
  9.  * Первая строка должна содержать одно целое число (1 <= x <= 10) - количество тестов.<br/>
  10.  * Следующая строка должна содержать одно целое число (1 <= n <= 1000) - количество прямоугольников.<br/>
  11.  * Следующая строка должна содержать n целых чисел (1 <= a[i] <= n) - длины прямоугольников.<br/><br/>
  12.  * Выходные данные:<br/>
  13.  * Для каждого набора входных данных выводится одно целое число - наибольшая возможная длина стороны квадрата.<br/><br/>
  14.  *
  15.  * Пример.<br/><br/>
  16.  *
  17.  * Входные данные:<br/>
  18.  * 4<br/>
  19.  * 5<br/>
  20.  * 4 3 1 4 5<br/>
  21.  * 4<br/>
  22.  * 4 4 4 4<br/>
  23.  * 3<br/>
  24.  * 1 1 1<br/>
  25.  * 5<br/>
  26.  * 5 5 1 1 5<br/><br/>
  27.  * Выходные данные:<br/>
  28.  * 3<br/>
  29.  * 4<br/>
  30.  * 1<br/>
  31.  * 3
  32.  */
  33. public class MaximumSquare
  34. {
  35.     public static void getSolution() throws IOException
  36.     {
  37.         input();
  38.     }
  39.  
  40.     private static void input() throws IOException
  41.     {
  42.         Scanner scanner = new Scanner(System.in);
  43.         FileWriter fileWriter = new FileWriter("C:\\Users\\slar1\\IdeaProjects\\Education\\src\\Tasks\\Task1\\Input.txt");
  44.  
  45.         System.out.print("\nВведите количество тестов: ");
  46.         int numberOfTests = scanner.nextInt();
  47.         fileWriter.write(numberOfTests + "\n");
  48.  
  49.         for (int numberOfTestsCount = 0;
  50.              numberOfTestsCount < numberOfTests;
  51.              numberOfTestsCount++)
  52.         {
  53.             System.out.print("\nТест " + (numberOfTestsCount + 1));
  54.  
  55.             System.out.print("\nВведите количество прямоугольников: ");
  56.             int numberOfRectangles = scanner.nextInt();
  57.             fileWriter.write(numberOfRectangles + "\n");
  58.  
  59.             System.out.print("Введите длины прямоугольников: ");
  60.  
  61.             for (int numberOfRectanglesCount = 0;
  62.                  numberOfRectanglesCount < numberOfRectangles;
  63.                  numberOfRectanglesCount++)
  64.             {
  65.                 int lengthOfRectangle = scanner.nextInt();
  66.  
  67.                 fileWriter.write
  68.                         (
  69.                                 String.valueOf
  70.                                         (
  71.                                                 numberOfRectanglesCount == numberOfRectangles - 1 ?
  72.                                                         lengthOfRectangle :
  73.                                                         lengthOfRectangle + " "
  74.                                         )
  75.                         );
  76.             }
  77.  
  78.             fileWriter.write
  79.                     (
  80.                         numberOfTestsCount == numberOfTests - 1 ?
  81.                                 "" :
  82.                                 "\n"
  83.                     );
  84.         }
  85.  
  86.         scanner.close();
  87.         fileWriter.close();
  88.  
  89.         inputRead();
  90.     }
  91.  
  92.     private static void inputRead() throws IOException
  93.     {
  94.         Scanner scanner = new Scanner(new FileReader("C:\\Users\\slar1\\IdeaProjects\\Education\\src\\Tasks\\Task1\\Input.txt"));
  95.  
  96.         int[] arrayOfLengthOfRectangles;
  97.  
  98.         while (scanner.hasNextLine())
  99.         {
  100.             int numberOfTests = Integer.parseInt(scanner.nextLine());
  101.  
  102.             for (int numberOfTestsCount = 0; numberOfTestsCount < numberOfTests; numberOfTestsCount++)
  103.             {
  104.                 arrayOfLengthOfRectangles = new int[Integer.parseInt(scanner.next())];
  105.  
  106.                 for (int numberOfRectanglesCount = 0;
  107.                      numberOfRectanglesCount < arrayOfLengthOfRectangles.length;
  108.                      numberOfRectanglesCount++)
  109.                     arrayOfLengthOfRectangles[numberOfRectanglesCount] = Integer.parseInt(scanner.next());
  110.  
  111.                 calculate(arrayOfLengthOfRectangles);
  112.             }
  113.         }
  114.  
  115.         scanner.close();
  116.     }
  117.  
  118.     private static void calculate(int[] arrayOfLengthOfRectangles) throws IOException
  119.     {
  120.         int count = 0;
  121.  
  122.         Arrays.sort(arrayOfLengthOfRectangles);
  123.  
  124.         int x = arrayOfLengthOfRectangles.length;
  125.         int y = arrayOfLengthOfRectangles[arrayOfLengthOfRectangles.length - 1];
  126.  
  127.         int[][] doubleArrayOfLengthOfRectangles = new int[y][x];
  128.  
  129.         for (int i = 0; i < x; i++)
  130.             for (int j = y; j > y - arrayOfLengthOfRectangles[i]; j--)
  131.                 doubleArrayOfLengthOfRectangles[j - 1][i] = 1;
  132.  
  133.         int a = x - 1;
  134.         int b = y;
  135.  
  136.         while ((a != 0 || b != 0) && (doubleArrayOfLengthOfRectangles[b - 1][a] != 0))
  137.         {
  138.             doubleArrayOfLengthOfRectangles[b - 1][a] = 2;
  139.  
  140.             count++;
  141.  
  142.             a--;
  143.             b--;
  144.         }
  145.  
  146.         output(count);
  147.  
  148.         System.out.println(Arrays.toString(arrayOfLengthOfRectangles));
  149.  
  150.         for (int i = 0; i < y; i++)
  151.         {
  152.             for (int j = 0; j < x; j++)
  153.             {
  154.                 System.out.print(doubleArrayOfLengthOfRectangles[i][j] + " ");
  155.             }
  156.  
  157.             System.out.println();
  158.         }
  159.        
  160.         System.out.println("Длина квадрата: " + count);
  161.     }
  162.  
  163.     private static void output(int lengthOfSquare) throws IOException
  164.     {
  165.         FileWriter fileWriter = new FileWriter("C:\\Users\\slar1\\IdeaProjects\\Education\\src\\Tasks\\Task1\\Output.txt");
  166.         fileWriter.write(lengthOfSquare + "\n");
  167.         fileWriter.close();
  168.     }
  169.  
  170.     public static void main(String[] args) throws IOException
  171.     {
  172.         getSolution();
  173.     }
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement