Advertisement
Guest User

Untitled

a guest
Oct 5th, 2015
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.14 KB | None | 0 0
  1. import java.math.BigDecimal;
  2. import java.util.*;
  3.  
  4. /**
  5.  * Created by SET on 5.10.2015 г..
  6.  */
  7. public class DragonAccounting {
  8.     public static void main(String[] args) {
  9.         Locale.setDefault(Locale.ROOT);
  10.         Scanner scanner = new Scanner(System.in);
  11.         BigDecimal initialCapital = new BigDecimal(scanner.nextLine());
  12.         Queue<Employee> employees = new ArrayDeque<>();
  13.         int days = 0;
  14.         String input = scanner.nextLine();
  15.         while (!input.equals("END")){
  16.             String[] commands = input.split(";");
  17.             days++;
  18.             int numberHired = Integer.parseInt(commands[0]);
  19.             int numberFired = Integer.parseInt(commands[1]);
  20.             BigDecimal salary = new BigDecimal(commands[2]);
  21.             for (int i = 0; i < numberHired; i++) {
  22.                 employees.add(new Employee(days, salary));
  23.             }
  24.  
  25.             if (days % 30 ==0) {
  26.                 BigDecimal salariesToGive = BigDecimal.ZERO;
  27.                 for (Employee employee : employees) {
  28.                     int daysWorking = days + 1 - employee.dayHired;
  29.                     if (daysWorking % 365 == 0) {
  30.                         employee.salary = employee.salary.multiply(new BigDecimal("1.006"));
  31.                     }
  32.                     BigDecimal dailySalary = employee.salary.divide(new BigDecimal(30), 9, BigDecimal.ROUND_UP).setScale(7, BigDecimal.ROUND_FLOOR);
  33.                     if (daysWorking < 30) {
  34.                         salariesToGive = salariesToGive.add(dailySalary.multiply(new BigDecimal(daysWorking)));
  35.                     }
  36.                     else {
  37.                         salariesToGive = salariesToGive.add(dailySalary.multiply(new BigDecimal(30)));
  38.                     }
  39.                 }
  40.                 initialCapital = initialCapital.subtract(salariesToGive);
  41.             }
  42.             for (int i = 0; i < numberFired; i++) {
  43.                 employees.remove();
  44.             }
  45.             for (int i = 3; i < commands.length; i++) {
  46.                 String[] additional = commands[i].split(":");
  47.                 BigDecimal number = new BigDecimal(additional[1]);
  48.                 switch (additional[0]){
  49.                     case "Previous years deficit" :
  50.                     case "Machines":
  51.                     case "Taxes": initialCapital = initialCapital.subtract(number);break;
  52.                     case "Product development":
  53.                     case "Unconditional funding": initialCapital = initialCapital.add(number);break;
  54.                 }
  55.             }
  56.             if (initialCapital.compareTo(BigDecimal.ZERO) < 0) {
  57.                 System.out.printf("BANKRUPTCY: %s", initialCapital.negate().setScale(4, BigDecimal.ROUND_FLOOR));
  58.                 return;
  59.             }
  60.             input = scanner.nextLine();
  61.         }
  62.         System.out.printf("%s %s", employees.size(), initialCapital.setScale(4, BigDecimal.ROUND_FLOOR));
  63.  
  64.     }
  65.  
  66.     static class Employee{
  67.         public int dayHired;
  68.         public BigDecimal salary;
  69.  
  70.         public Employee(int dayHired, BigDecimal salary) {
  71.             this.dayHired = dayHired;
  72.             this.salary = salary;
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement