can anybody tell me where I am getting wrong .
solution link:
CodeChef: Practical coding for everyone
can anybody tell me where I am getting wrong .
solution link:
CodeChef: Practical coding for everyone
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef vector<int> vi;
vi use[26];
vi forb[26];
void solve()
{
int n; cin>>n;
string a,b; cin>>a>>b;
vi va(26,0),vb(26,0);
for(int i=0;i<n;i++)
{
va[a[i]-'a']=1;
vb[b[i]-'a']=1;
}
set<int> s;
for(int i=0;i<n;i++)
{
if(b[i]!=a[i])
{
s.insert(b[i]-'a');
}
if(a[i]<b[i]){cout<<-1<<endl;return;}
}
int f=1;
for(int i=0;i<26;i++)
{
if(vb[i]==1 and va[i]==0)
{f=0;break;}
}
if(!f){cout<<-1<<endl;return;}
for(int i=0;i<n;i++)
{
use[a[i]-'a'].push_back(i);
forb[b[i]-'a'].push_back(i);
}
vi ans;
int cnt=0;
cout<<s.size()<<endl;
for(auto i:s)
{
int temp=use[i][0];
int pri=1;
for(int j=0;j<forb[i].size();j++)
{
if(forb[i][j]==temp){pri=0;cout<<forb[i].size()<<" ";}
}
if(pri){cout<<forb[i].size()+1<<" ";cout<<temp<<" ";}
for(int j=0;j<forb[i].size();j++)cout<<forb[i][j]<<" ";cout<<endl;
}
for(int i=0;i<26;i++)
{
use[i].clear();
forb[i].clear();
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int t; cin>>t; while(t--)
solve();
}
Sorry but i don’t do C++14, so can’t help you there mate
we have to take distinct letters from B array and in increasing order of that letters position we have to add in A right ?