比赛 |
20090916练习赛 |
评测结果 |
AWWWWWWWWW |
题目名称 |
字符串的距离 |
最终得分 |
10 |
用户昵称 |
苏轼 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-10-17 19:59:24 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
char a[2100],b[2100];
int lq,lw,number,q[2100],w[2100],answer=0,used[4000],qi=0,mo=0;
int main()
{
freopen ("blast.in","r",stdin);
freopen ("blast.out","w",stdout);
cin>>a>>b;
scanf("%d",&number);
lq=strlen(a);
lw=strlen(b);
if (lq<lw)
{
for (int i=0;i<lq;i++)
{
q[i]=a[i]-'a';
}
for (int i=0;i<lw;i++)
{
w[i]=b[i]-'a';
}
}
else
{
for (int i=0;i<lw;i++)
{
q[i]=b[i]-'a';
}
for (int i=0;i<lq;i++)
{
w[i]=a[i]-'a';
}
int temp;
temp=lq;
lq=lw;
lw=temp;
}
for (int i=0;i<lq;i++)
{
int a;
if (q[qi]-w[mo]>0)
{
if (q[qi]-w[mo]>number*2)
{
used[qi]+=number*2;
a=1;
}
else
{
used[qi]=q[qi]-w[mo];
a=1;
}
}
else
{
if (w[mo]-q[qi]>number*2)
{
used[qi]+=number*2;
a=1;
}
else
{
used[qi]=w[mo]-q[qi];
a=1;
}
}
if (q[qi]==w[mo+1])
{
used[qi]=max(used[qi],number);
a=2;
}
answer+=used[qi];
if (a==1)
{
qi++;
mo++;
}
if (a==2)
{
qi++;
mo+=2;
}
}
cout<<answer;
}