http://codeforces.com/problemset/problem/527/B
#include<bits/stdc++.h>
using namespace std;
const int MAX=200005;
char S[MAX],T[MAX];
int N,Hash[200][200]={0},MarkS[200]={0},MarkT[200]={0};
int main()
{
cin>>N>>(S+1)>>(T+1);
int Ans=0;
for (int i=1;i<=N;i++)
if (S[i]!=T[i])
Ans++,Hash[S[i]][T[i]]=i,MarkS[S[i]]=i,MarkT[T[i]]=i;
if (Ans<2)
cout<<Ans<<endl<<"-1 -1";
else
{
int Q=-1,W=-1;
bool Flag1=false,Flag2=false;
for (int i='a';i<='z';i++)
{
if (MarkS[i]!=0&&MarkT[i]!=0)
Flag1=true,Q=MarkS[i],W=MarkT[i];
for (int j='a';j<='z';j++)
{
if (Hash[i][j]!=0&&Hash[j][i]!=0)
Flag2=true,Q=Hash[i][j],W=Hash[j][i],i=j=199;
}
}
if (Flag2)
cout<<Ans-2<<endl<<Q<<' '<<W;
else if (Flag1)
cout<<Ans-1<<endl<<Q<<' '<<W;
else
cout<<Ans<<endl<<"-1 -1";
}
return 0;
}
CodeForces 527B - Error Correct System 哈希
最新推荐文章于 2018-08-10 21:45:53 发布