样例过了, WA20.
不知道是思路的问题还是代码的问题
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int aq[N], ay[N], vis[N];
int n;
int main()
{
cin >> n;
string s1, s2;
cin >> s1;
for(int i = 1; i <= n; i ++)
{
aq[i] = s1[i-1] - '0';
}
cin >> s2;
for(int i = 1; i <= n; i ++)
ay[i] = s2[i-1] - '0';
sort(ay + 1, ay + n + 1);
int res1 = 0;
for(int i = 1; i <= n; i ++)
{
int l = 1, r = n, mid, res, index;
bool flag = 1;
while(l <= r)
{
mid = l + r >> 1;
if(ay[mid] >= aq[i] && !vis[mid])
{
index = mid;
r = mid - 1;
flag = 0;
}
else l = mid + 1;
}
res1 += flag;
if(!flag) vis[index] = 1;
}
cout << res1 << endl;
int res2 = 0;
memset(vis, 0, sizeof(vis));
for(int i = 1; i <= n; i ++)
{
int l = 1, r = n, mid, res, index;
bool flag = 0;
while(l <= r)
{
mid = l + r >> 1;
if(ay[mid] > aq[i] && !vis[mid])
{
index = mid;
r = mid - 1;
flag = 1;
}
else l = mid + 1;
}
res2 += flag;
if(flag) vis[index] = 1;
}
cout << res2;
return 0;
}
