Bird
Raised Fist0
DSA Rustprogramming~20 mins

Aggressive Cows Maximum Minimum Distance in DSA Rust - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Aggressive Cows Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of maximum minimum distance calculation
What is the output of the Rust code that calculates the maximum minimum distance for placing 3 cows in stalls at positions [1, 2, 8, 4, 9]?
DSA Rust
fn can_place_cows(stalls: &Vec<i32>, cows: i32, dist: i32) -> bool {
    let mut count = 1;
    let mut last_position = stalls[0];
    for &stall in stalls.iter().skip(1) {
        if stall - last_position >= dist {
            count += 1;
            last_position = stall;
            if count == cows {
                return true;
            }
        }
    }
    false
}

fn aggressive_cows(stalls: &mut Vec<i32>, cows: i32) -> i32 {
    stalls.sort();
    let mut low = 0;
    let mut high = stalls[stalls.len() - 1] - stalls[0];
    let mut result = 0;
    while low <= high {
        let mid = (low + high) / 2;
        if can_place_cows(stalls, cows, mid) {
            result = mid;
            low = mid + 1;
        } else {
            high = mid - 1;
        }
    }
    result
}

fn main() {
    let mut stalls = vec![1, 2, 8, 4, 9];
    let cows = 3;
    let max_min_dist = aggressive_cows(&mut stalls, cows);
    println!("{}", max_min_dist);
}
A5
B4
C2
D3
Attempts:
2 left
💡 Hint
Think about placing cows with the largest minimum gap possible between them.
🧠 Conceptual
intermediate
1:30remaining
Understanding the binary search range in Aggressive Cows problem
In the Aggressive Cows problem, what is the correct initial range for binary searching the minimum distance between cows?
AFrom the minimum stall position to the maximum stall position
BFrom 1 to the number of stalls
CFrom 0 to the difference between the maximum and minimum stall positions
DFrom 0 to the number of cows
Attempts:
2 left
💡 Hint
Consider the smallest and largest possible distances between cows.
🔧 Debug
advanced
2:00remaining
Identify the bug causing incorrect placement check
Given the following Rust function for checking if cows can be placed with at least 'dist' distance, which option correctly identifies the bug?
DSA Rust
fn can_place_cows(stalls: &Vec<i32>, cows: i32, dist: i32) -> bool {
    let mut count = 1;
    let mut last_position = stalls[0];
    for &stall in stalls.iter().skip(1) {
        if stall - last_position > dist {
            count += 1;
            last_position = stall;
            if count == cows {
                return true;
            }
        }
    }
    false
}
AThe initial count should be 0 instead of 1
BThe condition should be 'stall - last_position >= dist' instead of '>'
CThe loop should start from the first stall, not skip(1)
DThe function should return false when count equals cows
Attempts:
2 left
💡 Hint
Check the comparison operator for distance condition.
📝 Syntax
advanced
1:30remaining
Identify the syntax error in Rust code snippet
What is the syntax error in this Rust code snippet for binary searching the maximum minimum distance?
DSA Rust
while low <= high {
    let mid = (low + high) / 2
    if can_place_cows(stalls, cows, mid) {
        result = mid;
        low = mid + 1;
    } else {
        high = mid - 1;
    }
}
AMissing semicolon after 'let mid = (low + high) / 2'
BIncorrect use of 'while' instead of 'for'
CUsing 'let' inside the loop is not allowed
DMissing braces around the if-else block
Attempts:
2 left
💡 Hint
Check line endings in Rust.
🚀 Application
expert
2:30remaining
Maximum minimum distance for large input stalls
Given 5 stalls at positions [10, 20, 30, 40, 50] and 3 cows, what is the maximum minimum distance to place all cows?
A20
B10
C15
D25
Attempts:
2 left
💡 Hint
Try placing cows with equal spacing and check feasibility.

Practice

(1/5)
1. What is the main goal of the Aggressive Cows Maximum Minimum Distance problem?
easy
A. To place cows in stalls so that the minimum distance between any two cows is as large as possible
B. To place cows in stalls so that the maximum distance between any two cows is as small as possible
C. To find the total number of cows that can fit in all stalls
D. To calculate the average distance between all cows placed in stalls

Solution

  1. Step 1: Understand the problem objective

    The problem asks to place cows in given stalls such that the smallest distance between any two cows is as large as possible.
  2. Step 2: Clarify the goal

    This means maximizing the minimum distance between cows, ensuring they are as far apart as possible.
  3. Final Answer:

    To place cows in stalls so that the minimum distance between any two cows is as large as possible -> Option A
  4. Quick Check:

    Maximize minimum distance = To place cows in stalls so that the minimum distance between any two cows is as large as possible [OK]
Hint: Maximize the smallest gap between cows placed [OK]
Common Mistakes:
  • Confusing maximum minimum distance with minimum maximum distance
  • Thinking the problem is about total cows fitting
  • Assuming average distance is the goal
2. Which of the following Rust code snippets correctly sorts the stall positions stored in a vector stalls for the Aggressive Cows problem?
easy
A. stalls.sort_by(|a, b| b.cmp(a));
B. stalls.sorted();
C. stalls.sort();
D. stalls.order();

Solution

  1. Step 1: Identify the correct Rust method to sort a vector

    In Rust, the method sort() sorts a vector in ascending order in place.
  2. Step 2: Check other options

    sorted() does not exist on vectors, sort_by with reversed order sorts descending, and order() is invalid.
  3. Final Answer:

    stalls.sort(); -> Option C
  4. Quick Check:

    Use sort() to sort vector in Rust [OK]
Hint: Use stalls.sort() to sort vector ascending in Rust [OK]
Common Mistakes:
  • Using non-existent methods like sorted()
  • Sorting in descending order by mistake
  • Trying to assign result of sort() which returns ()
3. Given the Rust code below, what is the output printed?
let stalls = vec![1, 2, 8, 4, 9];
let cows = 3;

let mut sorted_stalls = stalls.clone();
sorted_stalls.sort();

fn can_place_cows(stalls: &Vec<i32>, cows: i32, dist: i32) -> bool {
    let mut count = 1;
    let mut last_pos = stalls[0];
    for &pos in stalls.iter().skip(1) {
        if pos - last_pos >= dist {
            count += 1;
            last_pos = pos;
            if count == cows {
                return true;
            }
        }
    }
    false
}

let mut low = 1;
let mut high = sorted_stalls[sorted_stalls.len() - 1] - sorted_stalls[0];
let mut result = 0;

while low <= high {
    let mid = (low + high) / 2;
    if can_place_cows(&sorted_stalls, cows, mid) {
        result = mid;
        low = mid + 1;
    } else {
        high = mid - 1;
    }
}

println!("{}", result);
medium
A. 4
B. 6
C. 5
D. 3

Solution

  1. Step 1: Sort stalls and set search range

    Sorted stalls: [1, 2, 4, 8, 9]. Search distance range low=1, high=8 (9-1).
  2. Step 2: Binary search for max minimum distance

    mid=4: places 1,8 (count=2<3) fails, high=3.
    mid=2: places 1,4,8 succeeds, result=2, low=3.
    mid=3: places 1,4,8 (dists 3,4 >=3) succeeds, result=3, low=4>3 end. Prints 3.
  3. Final Answer:

    3 -> Option D
  4. Quick Check:

    Max min distance = 3 [OK]
Hint: Binary search distances, check feasibility with can_place_cows [OK]
Common Mistakes:
  • Not sorting stalls before binary search
  • Incorrect binary search boundaries
  • Miscounting cows placed in can_place_cows
4. Identify the bug in the following Rust function used in the Aggressive Cows problem and select the correct fix:
fn can_place_cows(stalls: &Vec<i32>, cows: i32, dist: i32) -> bool {
    let mut count = 0;
    let mut last_pos = stalls[0];
    for &pos in stalls.iter() {
        if pos - last_pos >= dist {
            count += 1;
            last_pos = pos;
            if count == cows {
                return true;
            }
        }
    }
    false
}
medium
A. Initialize count to cows instead of 0
B. Both A and B
C. Start loop from stalls.iter().skip(1) instead of stalls.iter()
D. No bug, function is correct

Solution

  1. Step 1: Analyze initial count and loop start

    Count should start at 1 because first cow is placed at stalls[0]. Loop should skip first stall to avoid counting it twice.
  2. Step 2: Fix both initialization and loop

    Set count = 1 and loop with stalls.iter().skip(1) to correctly count cows placed.
  3. Final Answer:

    Both A and B -> Option B
  4. Quick Check:

    Count=1 and skip first stall in loop [OK]
Hint: Start count at 1 and skip first stall in loop [OK]
Common Mistakes:
  • Starting count at 0 causes off-by-one error
  • Looping from first stall counts first cow twice
  • Returning false incorrectly due to wrong count
5. You have stalls at positions [2, 5, 11, 15, 17, 20] and want to place 4 cows. Using the Aggressive Cows approach, what is the maximum minimum distance you can achieve between any two cows?
hard
A. 4
B. 5
C. 7
D. 8

Solution

  1. Step 1: Sort stalls and set binary search range

    Stalls sorted: [2, 5, 11, 15, 17, 20]. Low=1, High=18 (20-2).
  2. Step 2: Binary search for max minimum distance

    mid=9: place cows at 2,11,20 (3 cows <4) fails, high=8.
    mid=4: place at 2,11,15,20 (dists 9,4,5 >=4, 4 cows) succeeds, result=4, low=5.
    mid=6: 2,11,17 (9,6 >=6, 20-17=3<6, 3 cows) fails, high=5.
    mid=5: 2,11,17 (9,6>=5, 20-17=3<5, 3 cows) fails, high=4.
    Max distance is 4.
  3. Final Answer:

    4 -> Option A
  4. Quick Check:

    Max min distance = 4 [OK]
Hint: Use binary search and feasibility check to find max distance [OK]
Common Mistakes:
  • Not updating binary search bounds correctly
  • Misplacing cows during feasibility check
  • Assuming max distance equals max stall gap
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard