Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.stream.Collector;
- import java.util.stream.Collectors;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- ArrayDeque<Integer> males = new ArrayDeque<>();
- Arrays.stream(scanner.nextLine().split("\\s+"))
- .mapToInt(Integer::parseInt)
- .forEach(males::push);
- ArrayDeque<Integer> females = (ArrayDeque<Integer>) Arrays.stream(scanner.nextLine().split("\\s+"))
- .mapToInt(Integer::parseInt)
- .boxed()
- .collect(Collectors.toCollection(ArrayDeque<Integer> ::new));
- int matches = 0;
- while (!females.isEmpty() && !males.isEmpty()){
- checkZerroValueFemales(females);
- checkZerroValueMales(males);
- if(females.isEmpty() || males.isEmpty()) {
- break;
- }
- divisibleBy25F(females);
- divisibleBy25M(males);
- if(females.isEmpty() || males.isEmpty()) {
- break;
- }
- int woman = females.peek();
- int man = males.peek();
- if (woman == man) {
- matches++;
- females.poll();
- males.pop();
- } else {
- females.poll();
- males.push(males.pop() - 2);
- }
- }
- System.out.println("Matches: " + matches);
- if(males.isEmpty()){
- System.out.println("Males left: none");
- }else{
- System.out.print("Males left: ");
- printStack(males);
- }
- if(females.isEmpty()){
- System.out.println("Females left: none");
- }else{
- System.out.print("Females left: ");
- printQueue(females);
- }
- }
- private static void printQueue(ArrayDeque<Integer> females) {
- StringBuilder fill = new StringBuilder();
- while (!females.isEmpty()){
- if(females.size() == 1){
- fill.append(females.poll());
- }else {
- fill.append(String.valueOf(females.poll())).append(", ");
- }
- }
- System.out.println(fill.toString());
- }
- private static void printStack(ArrayDeque<Integer> males) {
- StringBuilder fill = new StringBuilder();
- while (!males.isEmpty()){
- if(males.size()==1){
- fill.append(males.pop());
- }else {
- fill.append(String.valueOf(males.pop())).append(", ");
- }
- }
- System.out.println(fill.toString());
- }
- private static void divisibleBy25M(ArrayDeque<Integer> males) {
- int man = males.peek();
- if(man % 25 == 0){
- males.pop();
- if(!males.isEmpty()) {
- males.pop();
- }
- if(!males.isEmpty()) {
- divisibleBy25M(males);
- }
- }
- }
- private static void divisibleBy25F(ArrayDeque<Integer> females) {
- int woman = females.peek();
- if(woman % 25 == 0){
- females.poll();
- if(!females.isEmpty()) {
- females.poll();
- }
- if(!females.isEmpty()) {
- divisibleBy25F(females);
- }
- }
- }
- private static void checkZerroValueMales(ArrayDeque<Integer> males) {
- int man = males.peek();
- if(man <= 0){
- males.pop();
- if(!males.isEmpty()) {
- checkZerroValueMales(males);
- }
- }
- }
- private static void checkZerroValueFemales(ArrayDeque<Integer> females) {
- int woman = females.peek();
- if(woman <= 0){
- females.poll();
- if(!females.isEmpty()) {
- checkZerroValueFemales(females);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment