Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.math.BigDecimal;
- import java.util.*;
- /**
- * Created by SET on 5.10.2015 г..
- */
- public class DragonAccounting {
- public static void main(String[] args) {
- Locale.setDefault(Locale.ROOT);
- Scanner scanner = new Scanner(System.in);
- BigDecimal initialCapital = new BigDecimal(scanner.nextLine());
- Queue<Employee> employees = new ArrayDeque<>();
- int days = 0;
- String input = scanner.nextLine();
- while (!input.equals("END")){
- String[] commands = input.split(";");
- days++;
- int numberHired = Integer.parseInt(commands[0]);
- int numberFired = Integer.parseInt(commands[1]);
- BigDecimal salary = new BigDecimal(commands[2]);
- for (int i = 0; i < numberHired; i++) {
- employees.add(new Employee(0, salary));
- }
- for (Employee employee : employees) {
- employee.days++;
- if (employee.days % 365 ==0) {
- employee.salary = employee.salary.multiply(new BigDecimal("1.006"));
- }
- }
- if (days % 30 ==0) {
- BigDecimal salariesToGive = BigDecimal.ZERO;
- for (Employee employee : employees) {
- BigDecimal dailySalary = employee.salary.divide(new BigDecimal(30), 9, BigDecimal.ROUND_UP).setScale(7, BigDecimal.ROUND_FLOOR);
- if (employee.days < 30) {
- salariesToGive = salariesToGive.add(dailySalary.multiply(new BigDecimal(employee.days)));
- }
- else {
- salariesToGive = salariesToGive.add(dailySalary.multiply(new BigDecimal(30)));
- }
- }
- initialCapital = initialCapital.subtract(salariesToGive);
- }
- for (int i = 0; i < numberFired; i++) {
- employees.remove();
- }
- for (int i = 3; i < commands.length; i++) {
- String[] additional = commands[i].split(":");
- BigDecimal number = new BigDecimal(additional[1]);
- switch (additional[0]){
- case "Previous years deficit" :
- case "Machines":
- case "Taxes": initialCapital = initialCapital.subtract(number);break;
- case "Product development":
- case "Unconditional funding": initialCapital = initialCapital.add(number);break;
- }
- }
- if (initialCapital.compareTo(BigDecimal.ZERO) < 0) {
- System.out.printf("BANKRUPTCY: %s", initialCapital.negate().setScale(4, BigDecimal.ROUND_FLOOR));
- return;
- }
- input = scanner.nextLine();
- }
- System.out.printf("%s %s", employees.size(), initialCapital.setScale(4, BigDecimal.ROUND_FLOOR));
- }
- static class Employee{
- public int days;
- public BigDecimal salary;
- public Employee(int days, BigDecimal salary) {
- this.days = days;
- this.salary = salary;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement