๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
9.63K subscribers
5.61K photos
3 videos
95 files
10.6K links
๐ŸšฉMain Group - @SuperExams
๐Ÿ“Job Updates - @FresherEarth

๐Ÿ”ฐAuthentic Coding Solutions(with Outputs)
โš ๏ธDaily Job Updates
โš ๏ธHackathon Updates & Solutions

Buy ads: https://telega.io/c/cs_algo
Download Telegram
๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
Photo
#include <bits/stdc++.h>
using namespace std;
class UnionFind {
    vector<int> parent;
    vector<int> rank;
    vector<int> maxStrength;
   
public:
    UnionFind(int n) {
        parent.resize(n + 1);
        rank.resize(n + 1, 0);
        maxStrength.resize(n + 1);
        for (int i = 1; i <= n; ++i) {
            parent[i] = i;
            maxStrength[i] = i;
        }
    }

    int find(int u) {
        if (parent[u] != u) {
            parent[u] = find(parent[u]);
        }
        return parent[u];
    }

    void unionSets(int u, int v) {
        int rootU = find(u);
        int rootV = find(v);
       
        if (rootU != rootV) {
            if (rank[rootU] > rank[rootV]) {
                parent[rootV] = rootU;
                maxStrength[rootU] = max(maxStrength[rootU], maxStrength[rootV]);
            } else if (rank[rootU] < rank[rootV]) {
                parent[rootU] = rootV;
                maxStrength[rootV] = max(maxStrength[rootU], maxStrength[rootV]);
            } else {
                parent[rootV] = rootU;
                maxStrength[rootU] = max(maxStrength[rootU], maxStrength[rootV]);
                rank[rootU]++;
            }
        }
    }

    int getMaxStrength(int u) {
        return maxStrength[find(u)];
    }
};

vector<int> networkSums(int n, int e, vector<int>& from, vector<int>& to) {
    UnionFind uf(n);
    vector<int> results;
    int totalSum = 0;
   
    for (int i = 0; i < e; ++i) {
        int u = from[i];
        int v = to[i];
        uf.unionSets(u, v);

        unordered_set<int> uniqueRoots;
        totalSum = 0;
       
        for (int j = 1; j <= n; ++j) {
            uniqueRoots.insert(uf.find(j));
        }
       
        for (int root : uniqueRoots) {
            totalSum += uf.getMaxStrength(root);
        }
       
        results.push_back(totalSum);
    }
   
    return results;
}


Ion โœ…
def equalize(power):
    power.sort()
    n = len(power)
    median = power[n // 2] if n % 2 == 1 else (power[n // 2 - 1] + power[n // 2]) // 2
    total_time = sum(abs(p - median) for p in power)
    return total_time


Ion โœ…
def getMinimumSum(arr):
    n = len(arr)
    if n < 3:
        return -1
   
    left_min = [float('inf')] * n
    for i in range(1, n):
        left_min[i] = min(left_min[i-1], arr[i-1])
   
    right_min = [float('inf')] * n
    for i in range(n-2, -1, -1):
        right_min[i] = min(right_min[i+1], arr[i+1])
   
    min_sum = float('inf')
    found = False
   
    for j in range(1, n - 1):
        if left_min[j] < arr[j] and right_min[j] < arr[j]:
            current_sum = left_min[j] + arr[j] + right_min[j]
            min_sum = min(min_sum, current_sum)
            found = True
   
    return min_sum if found else -1

Ion โœ…
def getMinimumTime(requestedServers, transitionTime):
    n = len(requestedServers)
    m = len(transitionTime)
    min_time = 0
   
    for i in range(1, n):
        current = requestedServers[i] - 1 
        previous = requestedServers[i-1] - 1 
        distance = min((current - previous) % m, (previous - current) % m)
        min_time += distance * transitionTime[previous]
    return min_time
#include <vector> 
#include <algorithm>

int getMinimumTime(const std::vector<int>& requestedServers, const std::vector<int>& transitionTime) {
    int n = requestedServers.size();
    int m = transitionTime.size();
    int min_time = 0;

    for (int i = 1; i < n; i++) {
        int current = requestedServers[i] - 1;  
        int previous = requestedServers[i - 1] - 1;  
        int distance = std::min((current - previous + m) % m, (previous - current + m) % m);
        min_time += distance * transitionTime[previous];
    }
    
    return min_time;
}


Get Minimum Time โœ…
โค1
import heapq

class GPUAllocator:
    def __init__(self):
        self.available_gpus = []
        self.max_gpu_id = 10**6
        self.next_gpu_id = 1
        self.add_gpus(self.max_gpu_id)

    def add_gpus(self, count):
        for _ in range(count):
            heapq.heappush(self.available_gpus, self.next_gpu_id)
            self.next_gpu_id += 1

    def smallestUnoccupied(self):
        if not self.available_gpus:
            self.add_gpus(100)
        return self.available_gpus[0] if self.available_gpus else -1

# Example usage
allocator = GPUAllocator()
print(allocator.smallestUnoccupied())
print(allocator.smallestUnoccupied())


GPU
from collections import defaultdict

def findOptimalResources(arr, k):
    n = len(arr)
    if k > n:
        return -1
   
    window_sum = 0
    max_sum = 0
    unique_elements = defaultdict(int)
    left = 0
   
    for right in range(n):
        window_sum += arr[right]
        unique_elements[arr[right]] += 1
       

        if right - left + 1 > k:
            window_sum -= arr[left]
            unique_elements[arr[left]] -= 1
            if unique_elements[arr[left]] == 0:
                del unique_elements[arr[left]]
            left += 1

        if right - left + 1 == k and len(unique_elements) == k:
            max_sum = max(max_sum, window_sum)
   
    return max_sum if max_sum != 0 else -1
๐Ÿ˜ฑ1
๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
Photo
long findMaximumEarning(vector<int> send, vector<int> receive, vector<int> amount, vector<int> capacity) {
    int n = send.size();
    int m = capacity.size();
   
    vector<tuple<int, int, int>> tasks;
    for (int i = 0; i < n; i++) {
        tasks.push_back(make_tuple(max(send[i], receive[i]), amount[i], i));
    }
   
    sort(tasks.begin(), tasks.end(), [](const auto& a, const auto& b) {
        return get<1>(a) > get<1>(b);
    });
   
    sort(capacity.begin(), capacity.end());
   
    long totalEarnings = 0;
   
    vector<bool> used(m, false);
   
    for (const auto& task : tasks) {
        int taskData = get<0>(task);
        int taskEarning = get<1>(task);
       
        for (int i = 0; i < m; i++) {
            if (!used[i] && capacity[i] >= taskData) {
                totalEarnings += taskEarning;
                used[i] = true;
                break;
            }
        }
    }
   
    return totalEarnings;
}
long eqalize(vector<long>power)
{
  int n = power.size();
  sort(power.begin(), power.end());
  long val = 0;
  if (n % 2 == 1) {
    val = power[n / 2];
  }
  else {
    val = (power[(n - 1) / 2] + power[n / 2]) / 2;
  }
  long res = 0;
  for (long i = 0; i < n; ++i)
  {
    res += abs(power[i] - val);
  }
  return res;
}
SELECT 
    ROUND(
        (COUNT(CASE WHEN polygon_name = 'Adarsh Palm Retreat' THEN 1 END) * 100.0) /
        COUNT(*),
        2
    ) AS order_share
FROM
    POLYGON
WHERE
    order_date = '2020-12-31';

Swiggy Order share โœ…
SELECT 
    'within 100' AS BUCKET,
    COUNT(*) AS Orders
FROM cuisine_orders
WHERE item_total <= 100

UNION ALL

SELECT
    'within 150' AS BUCKET,
    COUNT(*) AS Orders
FROM cuisine_orders
WHERE item_total <= 150

UNION ALL

SELECT
    'within 200' AS BUCKET,
    COUNT(*) AS Orders
FROM cuisine_orders
WHERE item_total <= 200

ORDER BY BUCKET;

Swiggy Bucket wise order โœ…
๐Ÿ‘1
def minMoves(h, w, h1, w1):
    if h1 > h or w1 > w:
        return -1
    moves = 0
    while h > h1:
        h = (h + 1) // 2
        moves += 1
    while w > w1:
        w = (w + 1) // 2
        moves += 1
    return moves