/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Time Exceeded ≥1097ms ≥540.0 KiB

Code

#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define endl '\n'
#define ll long long
#define ull unsigned long long
#define ld long double
#define PI acos(-1.0)
#define pb push_back
#define mp make_pair
#define vi vector<ll>
#define maxn 500005
#define mod 1000000007
#define inf 1000000007
#define pii pair<ll,ll>
#define vii vector<pii>
#define sz(x) (int)x.size()
#define all(x) x.begin(), x.end()
#define lcm(a,b) ((a*b)/__gcd(a,b));
#define srt(v) sort(v.begin(),v.end())
#define rsrt(v) sort(v.rbegin(),v.rend())
#define setbits(x) __builtin_popcountll(x)
#define rep(i, a, b) for(ll i = (a); i < (b); i++)
#define per(i, a, b) for(int i = (a); i >= (b); i--)
#define rev_str(str) reverse(str.begin(),str.end());
#define print(v) for(auto e:v) cout<<e<<" "; cout<<endl;
#define sum(a) (accumulate((a).begin(), (a).end(), 0LL))
#define printp(v) for(auto e:v) cout<<e.first<<" "<<e.second<<endl;
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
bool sortByValue(const pair<int, int>& a, const pair<int, int>& b) {return a.second > b.second;}
void solve(){
    ll n,k;cin>>n>>k;
    string s;cin>>s;
    
    //printp(mp);
    if(k==0){
        cout<<s<<endl;return;
    }
    if (n == 0){
        cout << endl;
        return;
    }
    if (n == k){
        cout << 0 << endl;
        return;
    }
    char mx;
    ll ki = 0;
    for (int i = 0; i < n-k+1;i++){
        if(s[i]>mx){
            ki=i;
            mx= s[i];
        }
    }
    //cout<<ki;
    string b="";
    if(mx>0){
        b+=mx;
    }
    k-=ki;
    //cout<<k<<endl;
    map<char,ll>mp;
    rep(i,ki+1,n){
        mp[s[i]]++;
    }
    while(k--){
    
        bool ok = false;
        for (char i = '0'; i <= '9'; i++){
            if (mp[i] > 0){
                mp[i]--;
                //cout<<i<<endl;
                for (int j = ki+1; j < n; j++){
                    if (s[j] == i){
                        s[j] = 'x';
                        ok = true;
                        break;
                    }
                }
            }
            if(ok){
                break;
            }
        }
    }
    
    bool ashol = false;
    
    rep(i,ki+1,n){
        if(s[i]=='x'){
            continue;
        }
        else{
            //cout<<s[i];
            b+=s[i];
        }
    }
    //cout<<b<<endl;
    ll cnt=0;
    while(b[cnt]=='0'){
        cnt++;
    }
    rep(i,cnt,sz(b)){
        cout<<b[i];
    }
    cout<<endl;
}

int main() {
    fast
    ll t=1;cin>>t;
    while (t--) {
        solve();
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1006 Remove K Digits
Contest
Sylhet ICPC 2024 Collaborative Challenge: Episode 2
Language
C++17 (G++ 13.2.0)
Submit At
2024-10-30 12:38:36
Judged At
2024-10-30 12:38:36
Judged By
Score
0
Total Time
≥1097ms
Peak Memory
≥540.0 KiB