779D - String Game - CodeForces Solution


binary search strings *1700

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
#define ll             long long
#define pb             push_back
#define all(v)         v.begin(),v.end()
#define fr(i,s,e)      for(ll i=s;i<e;i++)
#define rfr(i,e,s)     for(ll i=e;i>=s;i--)
#define endl           "\n"
#define sz(a)          (ll)a.size()
#define mem1(a)        memset(a,-1,sizeof(a))
#define pii            pair<ll,ll>
#define ff             first
#define ss             second
#define mod            1000000000000000007
#define fast           ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL)
using namespace std;


bool check(string s , string p){
    ll d = p.size() , j = 0 ;
    for(auto x : s ){
        if(x==p[j]) j+=1;
        if(j==d) return 1 ;
    }
    return 0 ;
}

int main(){
    string s , p ;
    cin >> s >> p ;

    ll n = s.size() ;
    ll a[n+1] , lo = 1 , hi = n , res = 0 ;

    fr(i,1,n+1) cin >> a[i] ;

    while( lo <= hi ){
        ll m = (lo+hi+1)/2 , j = 0  ;
        vector<ll>v(a+1,a+m+1);
        sort(all(v));
        string ss="" , ts = s ;


        for(auto x : v ) ts[x-1]='A';
        for(auto x : ts ) if(x!='A') ss+=x;
//
//        cout << m << endl;
//        cout << ss << endl;
//        cout << check(ss,p) << endl;

        if(check(ss,p)) {
            lo = m+1 ;
            res = max(res,m);
        }
        else hi = m-1 ;
    }

    cout << res << endl;

return 0 ;
}



Comments

Submit
0 Comments
More Questions

866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)
332. Reconstruct Itinerary
368. Largest Divisible Subset
377. Combination Sum IV
322. Coin Change
307. Range Sum Query - Mutable
287. Find the Duplicate Number
279. Perfect Squares