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

int maxPartitions(vector<int>& nums) {
    int n = nums.size();
    unordered_map<long long, int> map, rmap;
    long long total = 0;

    for (int num : nums) {
        total += num;
    }

    long long left = 0, right = total;

    for (int i = 0; i < n - 1; ++i) {
        right -= nums[i];
        left += nums[i];
        long long diff = right - left;
        rmap[diff]++;
    }

    int result = rmap[0];

    left = 0;
    right = total;

    for (int i = 0; i < n; ++i) {
        result = max(result, map[nums[i]] + rmap[-nums[i]]);

        right -= nums[i];
        left += nums[i];

        long long diff = right - left;
        rmap[diff]--;
        map[diff]++;
    }

    return result;
}

int main() {
    int t;
    cin >> t;
   
    while (t--) {
        int n;
        cin >> n;
       
        vector<int> nums(n);
        for (int i = 0; i < n; ++i) {
            cin >> nums[i];
        }

        int result = maxPartitions(nums);
       
        cout << result << endl;
    }

    return 0;
}

Number of Partition โœ…
Google
๐Ÿ‘2
#include <iostream>
#include <vector>
#include <string>

using namespace std;


void precompute(const string& S, vector<vector<bool>>& isPalindrome) {
    int n = S.size();
    for (int i = 0; i < n; ++i) {
        isPalindrome[i][i] = true;
    }
    for (int len = 2; len <= n; ++len) {
        for (int i = 0; i <= n - len; ++i) {
            int j = i + len - 1;
            if (S[i] == S[j]) {
                if (len == 2) {
                    isPalindrome[i][j] = true;
                } else {
                    isPalindrome[i][j] = isPalindrome[i + 1][j - 1];
                }
            }
        }
    }
}


int countGoodTriplets(const string& S) {
    int n = S.size();
    vector<vector<bool>> isPalindrome(n, vector<bool>(n, false));
    precompute(S, isPalindrome);
   
 
    vector<int> dpLeft(n, 0);
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j <= i; ++j) {
            if (isPalindrome[j][i]) {
                dpLeft[i]++;
            }
        }
        if (i > 0) {
            dpLeft[i] += dpLeft[i - 1];
        }
    }
   
  
    vector<int> dpRight(n, 0);
    for (int i = n - 1; i >= 0; --i) {
        for (int j = i; j < n; ++j) {
            if (isPalindrome[i][j]) {
                dpRight[i]++;
            }
        }
        if (i < n - 1) {
            dpRight[i] += dpRight[i + 1];
        }
    }
   
    int goodTriplets = 0;
  
    for (int i = 1; i < n - 1; ++i) {
        for (int j = i; j < n - 1; ++j) {
            if (isPalindrome[i][j]) {
                goodTriplets += dpLeft[i - 1] * dpRight[j + 1];
            }
        }
    }
   
    return goodTriplets;
}

int main() {
    int t;
    cint >> t;
    while(t--){
        string S;
        cin >> S;
        cout << countGoodTriplets(S) << endl;
    }
    return 0;
}

Palindromic triplet
Google โœ…
Source :Hola
๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
Photo
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;

const int mod = 1e9+7;
const int K = 18;

int solve(int n, int m, vector<vector<int> > arr){
    vector<pair<int, int> > a(n);
    for(int i = 0; i < n; i++){
        a[i].first = arr[i][1];
        a[i].second = arr[i][0];
    }
    sort(a.begin(), a.end());
    reverse(a.begin(), a.end());


    int ans = 0;
    priority_queue<int> pq;
    int e = 0, price = 0;
    for(int i = 0; i < n; i++){
        price += a[i].second;
        pq.push(-a[i].second);
        e++;

        if(e < m) continue;
        if(e == m+1){
            e--;
            price += pq.top();
            pq.pop();
        }

        ans = max(ans, price + a[i].first * m);
    }

    return ans;
}

int32_t main(){
    cin.tie(0); cout.tie(0);
    ios_base::sync_with_stdio(false);
    int n, m;
    cin>>n>>m;
    vector<vector<int> > arr(n, vector<int>(2));
    for(int i = 0; i < n; i++){
        cin>>arr[i][0]>>arr[i][1];
    }

    cout<<solve(n, m, arr)<<endl;
    return 0;
}

Maximizing Profit
Google โœ…
๐Ÿ‘1
#include <bits/stdc++.h> 
#define ll long long
using namespace std;

void Sieve(ll n, vector<ll>& primes) {
    vector<bool> prime(n + 1, true);
    for (ll p = 2; p * p <= n; p++) {
        if (!prime[p]) continue;
        for (ll i = p * p; i <= n; i += p) {
            prime[i] = false;
        }
    }
    for (ll i = 2; i <= n; i++) {
        if (prime[i]) {
            primes.push_back(i);
        }
    }
}

bool isPrime(ll n, vector<ll>& primes) {
    auto it = find(primes.begin(), primes.end(), n);
    return it != primes.end();
}

void dfs(ll s, ll p, ll mod, vector<vector<ll>>& adj, vector<vector<ll>>& dp, vector<ll>& primes) {
    for (ll i = 0; i < 25; i++) {
        dp[s][i] = 1;
    }
    for (auto u : adj[s]) {
        if (u != p) {
            dfs(u, s, mod, adj, dp, primes);
            for (ll i = 0; i < 25; i++) {
                ll pos = 0;
                for (ll j = 0; j < 25; j++) {
                    if (!isPrime(primes[i] + primes[j], primes)) {
                        pos = (pos + dp[u][j]) % mod;
                    }
                }
                dp[s][i] = (dp[s][i] * pos) % mod;
            }
        }
    }
}

long long Validasignment(int n, vector<vector<int>>& edges) {
    ll mod = 1000000007;
    vector<ll> primes;
    Sieve(200, primes);
    vector<vector<ll>> dp(n + 1, vector<ll>(25, 0));
    vector<vector<ll>> adj(n + 1);
    for (int i = 0; i < n - 1; i++) {
        adj[edges[i][0]].push_back(edges[i][1]);
        adj[edges[i][1]].push_back(edges[i][0]);
    }
    dfs(1, -1, mod, adj, dp, primes);
    ll ans = 0;
    for (ll i = 0; i < 25; i++) {
        ans = (ans + dp[1][i]) % mod;
    }
    return ans;
}


Google โœ…
๐Ÿ‘1
#include <bits/stdc++.h>
using namespace std;

int equalzeroandone(vector<int>v){
    int n=v.size();
    for(int i=0;i<n;i++){
        if(v[i]==0){
            v[i]=-1;
        }
    }
    int sum=0;
    int ans=-1;
   map<int,int>mp;
    for(int i=0;i<n;i++){
        sum+=v[i];
        if(sum==0){
            ans=i+1;
        }
        if(mp.find(sum)!=mp.end()){
            ans=max(ans,i-mp[sum]);
        }
        else{
            mp[sum]=i;
        }
    }
    return ans;
}

int main() {
    int n;
    cin>>n;
    vector<int>v(n);
    for(int i=0;i<n;i++){
        cin>>v[i];
    }
    cout<<equalzeroandone(v);
}

Equal number of zero
Infosys
public static int findLargestSquareSize(List<List<Integer>> samples) {
  
// Write your code here
      int R = samples.size();
        if (R == 0) return 0;
        int C = samples.get(0).size();
       
        int[][] S = new int[R][C];
        int[][] M = new int[R][C];
       
        for (int i = 0; i < R; i++) {
            for (int j = 0; j < C; j++) {
                M[i][j] = samples.get(i).get(j);
            }
        }
       
        for (int i = 0; i < R; i++)
            S[i][0] = M[i][0];
        for (int j = 0; j < C; j++)
            S[0][j] = M[0][j];
       
        for (int i = 1; i < R; i++) {
            for (int j = 1; j < C; j++) {
                if (M[i][j] == 1) {
                    S[i][j] = Math.min(S[i][j - 1], Math.min(S[i - 1][j], S[i - 1][j - 1])) + 1;
                } else {
                    S[i][j] = 0;
                }
            }
        }
       
        int max_of_s = S[0][0];
        int max_i = 0;
        int max_j = 0;
       
        for (int i = 0; i < R; i++) {
            for (int j = 0; j < C; j++) {
                if (max_of_s < S[i][j]) {
                    max_of_s = S[i][j];
                    max_i = i;
                    max_j = j;
                }
            }
        }
       
        return Math.abs((max_i - max_of_s) - max_i);
    }.

findLargestSquareSize


Linkdin โœ…
vector<int>findSubsequence(vector<int>arr){
    map<int,int>m;
    vector<int>ans;
    int maxi=0;
    int n=arr.size();
    for(int i=0;i<n;i++){
        if(m[arr[i]]>0){
            if(arr[i]<maxi){
                return {-1};
            }
            else{
                maxi=max(maxi,arr[i]);
                ans.push_back(arr[i]);
            }
        }
        m[arr[i]]++;
    }
    return ans;
}

Find sequenceโœ…
๐Ÿ‘1
def twins(a, b):
    result = []
    for first, second in zip(a, b):
        if sorted(first[::2]) == sorted(second[::2]) and sorted(first[1::2]) == sorted(second[1::2]):
            result.append('Yes')
        else:
            result.append('No')
    return result

Twin linked โœ…
long long solve(int n,vector<int>v){
    long long ans=0;
   sort(v.begin(),v.end());
   for(int i=1;i<n;i++){
    if(v[i]<=v[i-1]){
        v[i]=v[i-1]+1;
    }

   }
  ans=accumulate(v.begin(),v.end(),0);
  
    return ans;
}

Minimum unique sum
import java.io.*;
import java.util.*;

public class Main {
    public static String trim(String str) {
        return str.trim();
    }

    public static int solve(int N, List<Integer> A) {
        int totalSum = A.stream().mapToInt(Integer::intValue).sum();
        int leftSum = 0;
        int equilibriumCount = 0;
       
        for (int i = 0; i < N; ++i) {
            int rightSum = totalSum - leftSum - A.get(i);
            if (leftSum == rightSum) {
                equilibriumCount++;
            }
            leftSum += A.get(i);
        }
       
        return equilibriumCount;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       
        String inputLine = br.readLine();
        int N = Integer.parseInt(trim(inputLine));

        List<Integer> A = new ArrayList<>();
        for (int j = 0; j < N; j++) {
            inputLine = br.readLine();
            A.add(Integer.parseInt(trim(inputLine)));
        }
       
        int result = solve(N, A);
        System.out.println(result);
    }
}


//Equilbrium path (try)
๐Ÿ‘2