比赛 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;
}