Smallest KMP Problem Code: SKMP Codechef Solution

 #include <bits/stdc++.h>
using namespace std;
int main(){
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  int t;
  cin>>t;
  while(t--){
    string p;
    int a[26]={0};
    // int b[26]={0};
    cin>>ws;
    cin>>p;
    for(char c:p)
      a[c-'a']++;
    cin>>p;
    for(char c:p)
      a[c-'a']--;
    char st=p[0];
    char en;
    int i=0;
    while(i<p.size()&&p[i]==st)
      i++;
    if(i<p.size())en=p[i];
    else en=st;

    i=0;
    if(en<st){
      for(;i<int(st-'a');i++)
        cout<<string(a[i],char('a'+i));
      cout<<p;
      for(;i<26;i++)
        cout<<string(a[i],char('a'+i));
    }
    else{
      for(;i<=int(st-'a');i++)
        cout<<string(a[i],char('a'+i));
      cout<<p;
      for(;i<26;i++)
        cout<<string(a[i],char('a'+i));
    }
    if(t)cout<<'\n';
    cin>>ws;
  }
  return 0;
}

Comments