Advertisement
Guest User

Untitled

a guest
Oct 5th, 2015
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.15 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(0, salary));
  23.             }
  24.             for (Employee employee : employees) {
  25.                 employee.days++;
  26.                 if (employee.days % 365 ==0) {
  27.                     employee.salary = employee.salary.multiply(new BigDecimal("1.006"));
  28.                 }
  29.             }
  30.             if (days % 30 ==0) {
  31.                 BigDecimal salariesToGive = BigDecimal.ZERO;
  32.                 for (Employee employee : employees) {
  33.                     BigDecimal dailySalary = employee.salary.divide(new BigDecimal(30), 9, BigDecimal.ROUND_UP).setScale(7, BigDecimal.ROUND_FLOOR);
  34.                     if (employee.days < 30) {
  35.                         salariesToGive = salariesToGive.add(dailySalary.multiply(new BigDecimal(employee.days)));
  36.                     }
  37.                     else {
  38.                         salariesToGive = salariesToGive.add(dailySalary.multiply(new BigDecimal(30)));
  39.                     }
  40.                 }
  41.                 initialCapital = initialCapital.subtract(salariesToGive);
  42.             }
  43.             for (int i = 0; i < numberFired; i++) {
  44.                 employees.remove();
  45.             }
  46.             for (int i = 3; i < commands.length; i++) {
  47.                 String[] additional = commands[i].split(":");
  48.                 BigDecimal number = new BigDecimal(additional[1]);
  49.                 switch (additional[0]){
  50.                     case "Previous years deficit" :
  51.                     case "Machines":
  52.                     case "Taxes": initialCapital = initialCapital.subtract(number);break;
  53.                     case "Product development":
  54.                     case "Unconditional funding": initialCapital = initialCapital.add(number);break;
  55.                 }
  56.             }
  57.             if (initialCapital.compareTo(BigDecimal.ZERO) < 0) {
  58.                 System.out.printf("BANKRUPTCY: %s", initialCapital.negate().setScale(4, BigDecimal.ROUND_FLOOR));
  59.                 return;
  60.             }
  61.             input = scanner.nextLine();
  62.         }
  63.         System.out.printf("%s %s", employees.size(), initialCapital.setScale(4, BigDecimal.ROUND_FLOOR));
  64.  
  65.     }
  66.  
  67.     static class Employee{
  68.         public int days;
  69.         public BigDecimal salary;
  70.  
  71.         public Employee(int days, BigDecimal salary) {
  72.             this.days = days;
  73.             this.salary = salary;
  74.         }
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement