比赛 10101115 评测结果 AAWWWWWWWW
题目名称 技能树 最终得分 20
用户昵称 Pom 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-15 11:19:21
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>

using namespace std;

const int MAXN=100;

int n,m,i,j,k,a[100][100],q[10000][2],x,y,da,ans=0;
bool b[MAXN][MAXN],c[MAXN][MAXN];

void init()
{
	freopen("skill.in","r",stdin);
	freopen("skill.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (i=1;i<=n;i++)
		for (j=1;j<=n-i+1;j++)
		{
			scanf("%d",&a[i][j]);
			c[i][j]=true;
		}
}

void solve()
{
	memset(b,false,sizeof(b));
	m=(1+n)*n/2-m;
	b[n][1]=true;
	while (m)
	{
		da=100000000;
		for (i=1;i<=n;i++)
			for (j=1;j<=n-i+1;j++)
				if (b[i][j] && da>a[i][j]) 
				{
					da=a[i][j];
					x=i;
					y=j;
				}
		ans-=da;
		m--;
		b[x-1][y]=c[x-1][y];
		b[x-1][y+1]=c[x-1][y+1];
		b[x][y]=c[x][y]=false;
	}
	for (i=1;i<=n;i++)
		for (j=1;j<=n-i+1;j++)
			ans+=a[i][j];
	cout<<ans<<endl;
}

int main()
{
	init();
	solve();
	return 0;
}