ALERT!
Click here to register with a few steps and explore all our cool stuff we have to offer!

Jump to content



Photo

Help with Java Problem


  • Please log in to reply
Help with Java Problem

#1

meowmeow0006
meowmeow0006
    Offline
    0
    Rep
    0
    Likes

    Lurker

Posts: 9
Threads: 1
Joined: Dec 15, 2017
Credits: 0
Six years registered
#1

Hey guys, I am struggling with this problem and am not sure how to even approach the problem in Java. Any help is appreciated. Here is the problem:

 

Farmer John's N cows (1?N?100) are standing in a line. The ith cow from the left has label i, for each 1?i?N.

 

Farmer John has come up with a new morning exercise routine for the cows. He tells them to repeat the following two-step process exactly K (1?K?109) times:

 

1. The sequence of cows currently in positions A1…A2 from the left reverse their order (1?A1<A2?N).
2. Then, the sequence of cows currently in positions B1…B2 from the left reverse their order (1?B1<B2?N).

 

After the cows have repeated this process exactly K times, please output the label of the ith cow from the left for each 1?i?N.

 

SCORING:
Test cases 2-3 satisfy K?100.
Test cases 4-13 satisfy no additional constraints.

 

INPUT FORMAT (file swap.in):
The first line of input contains N and K. The second line contains A1 and A2, and the third contains B1 and B2.

 

OUTPUT FORMAT (file swap.out):
On the ith line of output, print the label of the ith cow from the left at the end of the exercise routine.

SAMPLE INPUT:
7 2
2 5
3 7
SAMPLE OUTPUT:
1
2
4
3
5
7
6
Initially, the order of the cows is [1,2,3,4,5,6,7] from left to right. After the first step of the process, the order is [1,5,4,3,2,6,7]. After the second step of the process, the order is [1,5,7,6,2,3,4]. Repeating both steps a second time yields the output of the sample.


  • 0

#2

incimage6
incimage6
    Offline
    0
    Rep
    0
    Likes

    Member

Posts: 37
Threads: 0
Joined: Feb 24, 2020
Credits: 0
Four years registered
#2

source of the problem ?


  • 0

#3

tinacg
tinacg
    Offline
    -2
    Rep
    0
    Likes

    Addicted

  • PipPipPipPipPip
Posts: 189
Threads: 0
Joined: Dec 26, 2019
Credits: 0
Four years registered
#3
Mind blowing

  • 0

#4

anon5671437
anon5671437
    Offline
    0
    Rep
    0
    Likes

    Lurker

  • Pip
Posts: 6
Threads: 0
Joined: Mar 01, 2020
Credits: 0
Four years registered
#4

You have some broken characters in the post (e.g. K (1?K?109) times). I'm going to assume those are meant to be less than or equal symbols.

 

The first step to solving this problem is deciding on how to parse and model the input. A simple and direct way of modelling the problem would be to utilise an N sized array.

int[] cows = new int[N]

You will then need to initialize the values of the array to correct initial state.

for (int i = 0; i < cows.length; i++) {
    cows[i] = i'
}

This particular representation of the model lends itself to a direct brute force solution, where you reverse the order of the elements in the ranges [A1, A2] and [B1, B2] a total of K times. A simple way of doing this is to copy over the elements in reverse order and place them back in.

int[] temp = new int[A2-A1+1]
for (int i = A2; i >= A1; i--) {
  temp[A2-i] = cows[i];
}

for (int i = 0; i < temp.length; i++) {
  cows[A1+i] = temp[i];
}

  • 0

#5

tinacg
tinacg
    Offline
    -2
    Rep
    0
    Likes

    Addicted

  • PipPipPipPipPip
Posts: 189
Threads: 0
Joined: Dec 26, 2019
Credits: 0
Four years registered
#5
Yeah yeah great post

  • 0


 Users browsing this thread: and 1 guests