๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <climits>

using namespace std;

vector<long long> palindromes;

void generatePalindromes(int idx, string p, int flag);

long long calculate(string p) {
    string p1 = p;
    reverse(p1.begin(), p1.end());
    string fullPalindrome = p + p1;
    long long ans = 0;
    for (int i = fullPalindrome.length() - 1; i >= 0; i--) {
        if (fullPalindrome[i] == '1') {
            ans += (1LL << (fullPalindrome.length() - 1 - i));
        }
    }
    return ans;
}

long long calculateWithRemovedCenter(string p) {
    string p1 = p;
    reverse(p1.begin(), p1.end());
    if (!p1.empty())
        p1.erase(p1.begin());
    string fullPalindrome = p + p1;
    long long ans = 0;
    for (int i = fullPalindrome.length() - 1; i >= 0; i--) {
        if (fullPalindrome[i] == '1') {
            ans += (1LL << (fullPalindrome.length() - 1 - i));
        }
    }
    return ans;
}

void generatePalindromes(int idx, string p, int flag) {
    if (idx == 16) {
        palindromes.push_back(calculate(p));
        if (!p.empty()) {
            palindromes.push_back(calculateWithRemovedCenter(p));
        }
        return;
    }
    if (flag == 0) {
        generatePalindromes(idx + 1, p, 0);
        generatePalindromes(idx + 1, p + "1", 1);
    } else {
        generatePalindromes(idx + 1, p + "0", 1);
        generatePalindromes(idx + 1, p + "1", 1);
    }
}

long long solve(long long num) {
    auto it = lower_bound(palindromes.begin(), palindromes.end(), num);
    long long result = LLONG_MAX;
    if (it != palindromes.end()) {
        result = min(result, abs(*it - num));
    }
    if (it != palindromes.begin()) {
        result = min(result, abs(num - *(--it)));
    }
    return result;
}

int main() {
    generatePalindromes(0, "", 0);
    sort(palindromes.begin(), palindromes.end());

    long long num;
    cin >> num;
    cout << solve(num) << endl;

    return 0;
}
Binary palindrome number  Sprinklr โœ…
๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
Photo
import java.util.*;

public class MaxBinaryPath {
    static int N;
    static String S;
    static List<Integer>[] adj;
    static boolean[] visited;
    static String maxBinary = "";

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        N = sc.nextInt();

        S = sc.next();

        adj = new ArrayList[N + 1];
        for (int i = 1; i <= N; i++) {
            adj[i] = new ArrayList<>();
        }

        for (int i = 0; i < N - 1; i++) {
            int u = sc.nextInt();
            int v = sc.nextInt();
            adj[u].add(v);
            adj[v].add(u);
        }

        visited = new boolean[N + 1];

        for (int i = 1; i <= N; i++) {
            Arrays.fill(visited, false);
            dfs(i, "");
        }

        int maxLength = N; 
        System.out.println(String.format("%" + maxLength + "s", maxBinary).replace(' ', '0'));

        sc.close();
    }

    private static void dfs(int node, String path) {
        visited[node] = true;
        path += S.charAt(node - 1);

        if (path.length() == N && path.compareTo(maxBinary) > 0) {
            maxBinary = path;
        } else if (path.length() > N) {
            if (path.substring(0, N).compareTo(maxBinary) > 0) {
                maxBinary = path.substring(0, N);
            }
        }

        for (int neighbor : adj[node]) {
            if (!visited[neighbor]) {
                dfs(neighbor, path);
            }
        }

        visited[node] = false;
    }
}
๐Ÿ‘3
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(vector<int> &A, vector<int> &B) {
    int N = A.size();
    vector<vector<int>> dp(2, vector<int>(N, 0));
    dp[0][0] = A[0];
    dp[1][0] = max(A[0], B[0]);
   
    for (int j = 1; j < N; ++j) {
        dp[0][j] = max(dp[0][j - 1], A[j]);
        dp[1][j] = min(max(dp[0][j], B[j]), max(dp[1][j - 1], B[j]));
    }
   
    return dp[1][N - 1];
} /// MS TASK 2