1st Question

Untitled

Untitled

solution

int solve(string s) {
    int k = 0, l = 0;
    int sum1 = 0, sum0 = 0;
    int n = s.length();

    for (int i = 1; i < n; i++) {
        if (s[i] == 'F') 
            sum1++;
        else 
            sum0++;
            
        if (s[i] == s[i - 1] && s[i] == 'T')
            k++;
        else if (s[i] == s[i - 1] && s[i] == 'F')
            l++;
    }
    
    if (s[0] == 'F') 
        sum1++;
    else 
        sum0++;
        
    if (abs(sum1 - sum0) > 1) 
        return -1;
        
    return max(k, l);
}

2nd question

Untitled

Untitled

solution

#include <bits/stdc++.h>
using namespace std;

#define int long long

int findMinDifference(vector<int>& arr) {
    int size = arr.size();
    sort(arr.begin(), arr.end());
    int min_diff = LLONG_MAX;

    for (int i = 1; i < size; i++) {
        min_diff = min(min_diff, arr[i] - arr[i - 1]);
    }

    return min_diff;
}

3rd question

Untitled

Untitled

solution

#include <iostream>
#include <vector>
#include <algorithm>

bool canPlace(const std::vector<int>& rooms, int k, int minDist) {
    int count = 1;
    int lastPos = rooms[0];

    for (size_t i = 1; i < rooms.size(); ++i) {
        if (rooms[i] - lastPos >= minDist) {
            count++;
            lastPos = rooms[i];
            if (count == k) {
                return true;
            }
        }
    }

    return false;
}

int solve(int k, int n, std::vector<int>& rooms) {
    std::sort(rooms.begin(), rooms.end());

    int left = 0;
    int right = rooms[n - 1] - rooms[0];
    int best = 0;

    while (left <= right) {
        int mid = left + (right - left) / 2;

        if (canPlace(rooms, k, mid)) {
            best = mid;
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    return best;
}

int main() {
    // Example usage
    std::vector<int> rooms = {1, 2, 8, 4, 9};
    int k = 3;
    int n = rooms.size();
    std::cout << solve(k, n, rooms) << std::endl; // Output should be the maximum minimum distance

    return 0;
}