๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
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
bool isp(string s){
    int n=s.length();
    for(int i=0;i<n/2;i++){
        if(s[i]!=s[n-i-1]){
            return false;
        }
    }
    return true;
}

int longestString(vector<string>v){
    unordered_map<string,int>mp;
    for(auto x:v){
        mp[x]++;
    }
    int ans=0;
    for(auto x:mp){
      if(x.second>1){
        int k=(x.second)/2;
          ans+=k*(x.first.length()); 
      }
      if(x.second%2!=0){
         mp[x.first]=1;
      }
      else
      mp.erase(x.first);
    }
    int maxi=0;
    for(auto x:mp){
        if(isp(x.first)){
            maxi=max(maxi,(int)x.first.length());
        }
    }
    return ans+maxi;
}

Max palindrome
Infosys โœ…
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define ll long long
vector<vector<ll>> solve(ll n,ll k,vector<ll>&a,vector<ll>&b)
{
    priority_queue<pair<double,pair<ll,ll>>> pq;
    for(int i=0;i<n;i++)
    {
        double x=a[i];
        double y=b[i];
        double dis=sqrt(x+y);
        pq.push({dis,{x,y}});
        if(pq.size()>k)  pq.pop();
    }
    vector<vector<ll>>ans;
    while(!pq.empty())
    {
        ans.push_back({pq.top().second.first,pq.top().second.second});
        pq.pop();
    }
    sort(begin(ans),end(ans));
    return ans;
}
signed main()
{       
        ll n,k; cin>>n>>k;
        vector<ll>a(n),b(n);
        for(ll i=0;i<n;i++) cin>>a[i];
        for(ll i=0;i<n;i++) cin>>b[i];
        vector<vector<ll>>ans=solve(n,k,a,b);
        for(auto it:ans) cout<<it[0]<<" "<<it[1]<<endl;
           
    return 0;
}


Closet k points to origin
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
void generateSubstrings(const string &s, int len, unordered_set<string> &substrings) {
    for (int i = 0; i <= s.size() - len; ++i) {
        substrings.insert(s.substr(i, len));
    }
}

string findMinimalString(const string &s) {
    unordered_set<string> substrings;
    for (int len = 1; ; ++len) {
        substrings.clear();
        generateSubstrings(s, len, substrings);
        string candidate(len, 'a');
        while (true) {
            if (substrings.find(candidate) == substrings.end()) {
                return candidate;
            }
            int pos = len - 1;
            while (pos >= 0 && candidate[pos] == 'z') {
                candidate[pos] = 'a';
                --pos;
            }
            if (pos < 0) break;
            ++candidate[pos];
        }
    }
}

int main() {
    string S;
    cin >> S;
    cout << findMinimalString(S) << endl;
    return 0;
}. 

Minimal string โœ…
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define ll long long
ll solve(ll n,ll k,vector<ll>&a)
{  
    k++;
    unordered_map<ll,ll>freq;
    map<ll,vector<ll>>mpp;
    for (ll i=0;i<n;i++)
    {  
        freq[a[i]]++;
        mpp[freq[a[i]]].push_back(a[i]);
    }
    ll ans=0;
    for (auto it:mpp) ans+=it.second.size();
    return ans;
}
signed main()
{       
        ll n,k; cin>>n>>k;
        vector<ll>a(n);
        for(ll i=0;i<n;i++) cin>>a[i];
        cout<<solve(n,k,a);
           
    return 0;
}


Sequence split โœ…
const int MOD = 1000000007;

int subsetSumCount(const vector<int>& A, int L, int R, int K) {
    vector<int> dp(K + 1, 0);
    dp[0] = 1;

    for (int i = L; i <= R; ++i) {
        for (int j = K; j >= A[i]; --j) {
            dp[j] = (dp[j] + dp[j - A[i]]) % MOD;
        }
    }

    return dp[K];
}

int findXOR(int n, int Q, const vector<int>& A, const vector<vector<int>>& B ) {
    int result = 0;
    for (const auto& query : B ) {
        int L = query[0] - 1;
        int R = query[1] - 1;
        int K = query[2];
        int P = subsetSumCount(A, L, R, K);
        result ^= P;
    }
    return result;
}


//subarray subset sumโœ…
import java.util.*;

public class PrimeSumOptimal {
   
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] A = new int[N];
        for (int i = 0; i < N; i++) {
            A[i] = sc.nextInt();
        }
        System.out.println(maxNonPrimeSumSubset(A, N));
        sc.close();
    }
    private static boolean[] isPrime;
    private static void sieve(int maxLimit) {
        isPrime = new boolean[maxLimit + 1];
        Arrays.fill(isPrime, true);
        isPrime[0] = isPrime[1] = false;
        for (int p = 2; p * p <= maxLimit; p++) {
            if (isPrime[p]) {
                for (int i = p * p; i <= maxLimit; i += p) {
                    isPrime[i] = false;
                }
            }
        }
    }
   
    private static boolean isPrime(int num) {
        return isPrime[num];
    }
    private static int maxNonPrimeSumSubset(int[] A, int N) {
        sieve(1000);
        int maxSubsetSize = 0;
        for (int bitmask = 0; bitmask < (1 << N); bitmask++) {
            List<Integer> subset = new ArrayList<>();
            for (int i = 0; i < N; i++) {
                if ((bitmask & (1 << i)) != 0) {
                    subset.add(A[i]);
                }
            }
            boolean validSubset = true;
            int subsetSize = subset.size();
            for (int i = 0; i < subsetSize && validSubset; i++) {
                for (int j = i + 1; j < subsetSize; j++) {
                    if (isPrime(subset.get(i) + subset.get(j))) {
                        validSubset = false;
                        break;
                    }
                }
            }
            if (validSubset) {
                maxSubsetSize = Math.max(maxSubsetSize, subsetSize);
            }
        }
       
        return maxSubsetSize;
    }
}. 

pair sum
๐Ÿ‘2
๐—–๐—ฆ ๐—”๐—น๐—ด๐—ผ ๐Ÿ’ป ๐ŸŒ ใ€Ž๐—–๐—ผ๐—บ๐—ฝ๐—ฒ๐˜๐—ถ๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ดใ€
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