View Code of Problem 1005

#include<iostream>
#include<stdio.h>

using namespace std;

#define inf 100000000

int map[1001][1001];

void put(int n)
{
	int i,j,k;
	for (j=0;j<n;j++)
	{
		for (i=0;i<n;i++)
			cout<<map[j][i]<<' ';
		cout<<endl;
	}
}

int main()
{
	int i,j,k;
	int p[10000];
	int e[10000];
	int n;
	int t;
	//cout<<"fdkj";
	cin>>t;
	int num=0;
	while (t--)
	{
		num++;
		scanf("%d",&n);
		int total=0;
		for (i=0;i<n;i++)
		{
			scanf("%d",e+i);
			map[i][i]=0;
			total+=e[i];
		}
		for (j=0;j<n;j++)
		{
			for (i=j+1;i<n;i++)
			{
				map[j][i]=map[j][i-1]+e[i-1];
				map[i][j]=total-map[j][i];
			}
		}
		//put(n);
		printf("Case #%d:",num);
		for (i=0;i<n;i++)
		{
			int ans=inf;
			for (j=0;j<n;j++)
			{
				ans=min(ans,map[j][i]-e[(j-1+n)%n]);
				ans=min(ans,map[i][j]-e[j]);
			}
			printf(" %d",ans+total);
		}
		printf("\n");
	}
}

Double click to view unformatted code.


Back to problem 1005