Advertisement
Guest User

Untitled

a guest
Sep 20th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.51 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.     public static void main(String[] args) {
  6.         Scanner in=new Scanner(System.in);
  7.         int vagas,numVaga,chave,vagasOcupadas = 0,vagasOcupadasReal = 0,distMax1 = 0,distMax2 = 0;
  8.         float Fmin,Fmax;
  9.         String linha = "",placa = "";
  10.        
  11.         vagas = in.nextInt();
  12.         Fmin = in.nextInt();
  13.         Fmax = in.nextInt();
  14.        
  15.         int vagasMin = vagas;
  16.         String[] park1=new String[x];
  17.         String[] park2=new String[x];
  18.        
  19.         linha = in.nextLine();
  20.        
  21.         while (in.hasNext() && !linha.equals("END") {
  22.             if (linha.charAt(0) == 'I') {
  23.                 boolean stop = false;
  24.                 if (vagasOcupadas/vagas > Fmax) {
  25.                     vagas = vagas * 2;
  26.                     String[] park3 = new String [vagas];
  27.                     for (int i = 0; i < park1.length ;i++) {
  28.                         if (park1[i] != null && park1[i].charAt(0) != 'i')) {
  29.                             int numVagaAux = chave(park1[i]) % vagas;
  30.                             if (park3[numVagaAux] == null) {
  31.                                 park3[numVagaAux] = park1[i];
  32.                             } else {
  33.                                 for (int j = 1 ; !stop ; j++) {
  34.                                     if (park3[(numVagaAux + j) % vagas] == null) {
  35.                                         park3[(numVagaAux + j) % vagas] = park1[i];
  36.                                         stop = true;
  37.                                     }
  38.                                 }
  39.                             }
  40.                         }
  41.                     }
  42.                     park1 = park3.clone();
  43.                 }
  44.                 placa = linha.substring(3);
  45.                 numVaga = chave(placa) % vagas;
  46.                 stop = false;
  47.                 if (park1[numVaga] == null) {
  48.                     park1[numVaga] = placa;
  49.                 } else {
  50.                     for (int x = 1 ; !stop ; x++) {
  51.                         if (park1[(numVaga + x) % vagas] == null) {
  52.                             park1[(numVaga + x) % vagas] = placa;
  53.                             stop = true;
  54.                         }
  55.                     }
  56.                 }
  57.                 vagasOcupadas++;
  58.                 vagasOcupadasReal++;
  59.             } else if (linha.charAt(0) == 'O') {
  60.                 boolean stop = false;
  61.                 placa = linha.substring(4);
  62.                 numVaga = chave(placa) % vagas;
  63.                 if (park1[numVaga] != null && park1[numVaga].equals(placa)) {
  64.                     park1[numVaga] = "indisponivel";
  65.                 } else {
  66.                     for (int x = 1 ; !stop ; x++) {
  67.                         if (park1[(numVaga + x) % vagas] != null && park1[(numVaga + x) % vagas].equals(placa)) {
  68.                             stop = true;
  69.                             park1[(numVaga + x) % vagas] = "indisponivel";
  70.                         }
  71.                     }
  72.                 }
  73.                 vagasOcupadasReal--;
  74.                 if (vagasOcupadasReal/vagas < Fmin) {
  75.                     if (vagas != vagasMin) {
  76.                         vagas = vagas/2;
  77.                     }                    
  78.                     String[] park3 = new String [vagas];
  79.                     for (int i = 0; i < park1.length ;i++) {
  80.                         if (park1[i] != null && park1[i].charAt(0) != 'i')) {
  81.                             int numVagaAux = chave(park1[i]) % vagas;
  82.                             if (park3[numVagaAux] == null) {
  83.                                 park3[numVagaAux] = park1[i];
  84.                             } else {
  85.                                 for (int j = 1 ; !stop ; j++) {
  86.                                     if (park3[(numVagaAux + j) % vagas] == null) {
  87.                                         park3[(numVagaAux + j) % vagas] = park1[i];
  88.                                         stop = true;
  89.                                     }
  90.                                 }
  91.                             }
  92.                         }
  93.                     }
  94.                     vagasOcupadas = vagasOcupadasReal;
  95.                 }
  96.                
  97.             }
  98.         }
  99.        
  100.     }
  101.     public static int chave(String placa) {
  102.         int chave = (placa.charAt(0) - 'A') + (placa.charAt(1) - 'A')*26 + (placa.charAt(2) - 'A')*Math.pow(26,2) + (placa.charAt(3) - 'A')*Math.pow(26,3) + (placa.charAt(4) - 'A')*Math.pow(26,4) + (placa.charAt(5) - 'A')*Math.pow(26,5);
  103.         return chave;
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement