TL#1
Может, я чего и не понимаю, но почему подобный код получает TL#1?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define inf 2100000000
int a[2][510],res[2][510];
char fy[110][510];
int n,m,min,i1,i2;
void Rec(int i, int j)
{
if (i > 1) {
if (fy[i][j] == j) Rec(i-1,j); else Rec(i,fy[i][j]);
};
printf("%d\n",j);
};
int main(void)
{
int i,j;
scanf("%d%d",&m,&n);
for (j = 1; j <= n; j++) scanf("%d",&a[1][j]);
for (i = 1; i <= n; i++) res[1][i] = a[1][i];
for (i = 2; i <= m; i++)
for (j = 1; j <= n; j++) res[i][j] = inf;
for (i = 1; i < m; i++) {
i1 = i%2; i2 = (i+1)%2;
for (j = 1; j <= n; j++) scanf("%d",&a[i2][j]);
for (j = 1; j <= n; j++) {
res[i2][j] = res[i1][j] + a[i2][j]; fy[i+1][j] = j;
};
for (j = 2; j <= n; j++)
if (res[i2][j] > res[i2][j-1] + a[i2][j]) {
res[i2][j] = res[i2][j-1] + a[i2][j]; fy[i+1][j] = j-1;
};
for (j = n-1; j >= 1; j--)
if (res[i2][j] > res[i2][j+1] + a[i2][j]) {
res[i2][j] = res[i+1][j+1] + a[i2][j]; fy[i+1][j] = j+1;
};
};
min = inf;
for (i = 1; i <= n; i++)
if (res[m%2][i] < min) {
min = res[m%2][i]; i1 = i;
};
Rec(m,i1);
return 0;
};