Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package p01DatingApp;
- import java.util.ArrayDeque;
- import java.util.Arrays;
- import java.util.Deque;
- import java.util.Scanner;
- import java.util.stream.Collectors;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- Deque<Integer> malesStack = createStack(scanner);
- Deque<Integer> femalesQueue = createQueue(scanner);
- scanner.close();
- int matchesCount = startMatching(malesStack, femalesQueue);
- StringBuilder sb = createOutput(malesStack, femalesQueue, matchesCount);
- System.out.println(sb);
- }
- private static StringBuilder createOutput(Deque<Integer> malesStack, Deque<Integer> femalesQueue, int matchesCount) {
- StringBuilder sb = new StringBuilder();
- sb.append("Matches: " + matchesCount).append(System.lineSeparator());
- if (malesStack.size() > 0) {
- sb.append("Males left: ");
- for (int male : malesStack) {
- sb.append(male + ", ");
- }
- } else {
- sb.append("Males left: none, ");
- }
- sb.replace(sb.length() - 2, sb.length(), "").append(System.lineSeparator());
- if (femalesQueue.size() > 0) {
- sb.append("Females left: ");
- for (int female : femalesQueue) {
- sb.append(female + ", ");
- }
- } else {
- sb.append("Females left: none, ");
- }
- sb.replace(sb.length() - 2, sb.length(), "");
- return sb;
- }
- private static int startMatching(Deque<Integer> malesStack, Deque<Integer> femalesQueue) {
- int matchesCount = 0;
- while (!malesStack.isEmpty() && !femalesQueue.isEmpty()) {
- int male = malesStack.peek();
- int female = femalesQueue.peek();
- if (male % 25 == 0) {
- malesStack.pop();
- malesStack.pop();
- continue;
- }
- if (female % 25 == 0) {
- femalesQueue.poll();
- femalesQueue.poll();
- continue;
- }
- if (male == female) {
- matchesCount++;
- malesStack.pop();
- femalesQueue.poll();
- continue;
- }
- femalesQueue.poll();
- malesStack.pop();
- int newMaleVal = male - 2;
- if (newMaleVal > 0) {
- malesStack.push(male - 2);
- }
- }
- return matchesCount;
- }
- private static Deque<Integer> createQueue(Scanner scanner) {
- Deque<Integer> queue = Arrays.stream(scanner.nextLine().split("\\s+"))
- .map(Integer::parseInt)
- .filter(x -> x > 0)
- .collect(Collectors.toCollection(ArrayDeque::new));
- return queue;
- }
- private static Deque<Integer> createStack(Scanner scanner) {
- var stack = new ArrayDeque<Integer>();
- Arrays.stream(scanner.nextLine().split("\\s+"))
- .map(Integer::parseInt)
- .filter(x -> x > 0)
- .forEach(x -> {
- stack.push(x);
- });
- return stack;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement