### N_O_E_L's blog

By N_O_E_L, history, 2 years ago, I have been trying to solve [problem:https://codeforces.com/contest/1281/problem/B] and couldn't solve it in the first step. So I took help from the tutorial and implemented the idea in my own way. But it got the wrong answer as a verdict. So I looked at the code of ecnerwala and found that the idea is same and now I can't figure out what is wrong with my code. Can anyone help me to find it out? I couldn't find a better way than posting this and seeking your help.

Thank You

My code :

86280675

#include <bits/stdc++.h>

using namespace std;

void solve(void)
{
string a, b;
cin >> a >> b;

if(a<b) {cout << a << "\n"; return ;}
string k = a;
sort(k.begin(), k.end());
int n = a.length();
bool ok = true;
for(int i = 0; i<n && ok; i++){
if(a[i] != k[i]){
for(int j = i+1; j<n; j++){
if(a[j] == k[i]){
swap(a[j], a[i]);
ok = false;
break;
}
}
}
}
if(a<b) cout << a << "\n";
else cout << "---\n";
}

int main(void)
{
int t;

cin >> t;

while(t--){
solve();
}

return 0;
}


Ecnerwala's code :

66933725

#include<bits/stdc++.h>
using namespace std;

int main() {
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int T; cin >> T;
while (T--) {
string S, C; cin >> S >> C;
if(S<C) {cout << S << "\n"; continue;}
for (int i = 0; i < int(S.size()); i++) {
char best = *min_element(S.begin()+i, S.end());
if (best == S[i]) continue;
for (int j = int(S.size()) - 1; j > i; j--) {
if (S[j] == best) {
swap(S[j], S[i]);
goto done;
}
}
}
done:
if (S < C) {
cout << S << '\n';
} else {
cout << "---" << '\n';
}
}

return 0;
} Comments (4)
 » 2 years ago, # | ← Rev. 2 →   Try the testcase:1BBBAAABBBAYour code says that it is impossible whereas it should have been ABBABI have modified your code to give the correct result : here
•  » » V_S_M thank you very much. Now I have understood my mistake.
•  » » 2 years ago, # ^ | ← Rev. 2 →   nice
 » My problem has been solved. Thank you ..