Cod sursa(job #386294)

Utilizator ktalyn93Catalin ktalyn93 Data 24 ianuarie 2010 16:25:32
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>
#include <values.h>
int m,n,i,j,s,j1,j2;
long min,min2;
int  a[251][251];
long  b[251][251];
void citire()
{
	freopen("lacusta.in","r",stdin);
	freopen("lacusta.out","w",stdout);
	scanf("%d",&m);
	scanf("%d",&n);
	for(i=1;i<=m;i++)
		for(j=1;j<=n;j++)
			scanf("%d",&a[i][j]);

}
int main()
{
	citire();
	b[2][1]=a[2][1];
	for(j=2;j<=n;j++)
		b[2][j]=a[1][1]+a[2][j]+a[1][j];
	min=MAXLONG;
	for(i=2;i<=n;i++)
			if(min>b[2][i])
			{
				min=b[2][i];
				j1=i;
			}
	min2=MAXLONG;
	for(i=2;i<=n;i++)
			if(min2>b[2][i] && j1!=i)
			{
				min2=b[2][i];
				j2=i;
			}
	for(i=3;i<=m;i++)
	{
		for(j=1;j<=n;j++)
		if(j!=j1)
			b[i][j]=a[i][j]+min+a[i-1][j];
		else
			b[i][j]=a[i][j]+min2+a[i-1][j];

		min=MAXLONG;
		for(j=1;j<=n;j++)
			if(min>b[i][j])
			{
				min=b[i][j];
				j1=j;
			}
		min2=MAXLONG;
		for(j=1;j<=n;j++)
			if(min2>b[i][j] && j1!=j)
			{
				min2=b[i][j];
				j2=j;
			}
     /*		for(j=1;j<=n;j++)
			printf("%d ",b[i][j]);
		printf("\n");*/
	}
	min=MAXLONG;
	for(j=1;j<n;j++)
			if(min>b[m][j])
			min=b[m][j];

	printf("%ld",min+a[m][n]);
	return 0;
}