Cod sursa(job #2351358)

Utilizator tiberiu392Tiberiu Ungurianu tiberiu392 Data 22 februarie 2019 11:46:49
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <bits/stdc++.h>
#define dim 65
using namespace std;

ifstream f("suma4.in");
ofstream g("suma4.out");
int n,a[dim][dim][dim],b[dim][dim][dim],s,nr ,i ,j, k , num;
int main()
{
    f >> n ;
    for ( i = 1 ; 0 < n ; i++ )
    {
        for ( j = 1 ; j <= i ; j++ )
            {
                for ( k = 1 ; k <= i ; k++ )
                {
                    int x;
                    f >> x;
                    a[i][j][k] = b[i][j][k] = x;
                    n--;
                }
            }
    }
    g << i-1 << " ";
    for (int lin = i-1 ; lin >= 1 ;  lin-- )
        for (int col = 1 ; col <= lin ; col++ )
            for (int level =1 ; level <= lin ; level++ )
            {
                if (a[lin+1][col][level]<=a[lin+1][col][level+1])
                    num = a[lin+1][col][level];
                else
                num = a[lin+1][col][level+1];

                if( num > a[lin+1][col+1][level])
                num = a[lin+1][col+1][level];

                if( num > a[lin+1][col+1][level+1])
                num = a[lin+1][col+1][level+1];
                a[lin][col][level] = a[lin][col][level]+num;
            }
    s = a[1][1][1];
    g << s <<'\n';
    g << 1 <<" ";
    int lin = 1, col = 1;
    i = 1;
    while (s)
    {
        nr = nr+i*i;
        s = s-b[i][lin][col];
        i++;
        if( s )
        {
            if( a[i][lin][col+1] == s )
            col++;
            else
                if( a[i][lin+1][col] == s)
                lin++;
            else
            if ( a[i][lin+1][col+1] == s )
                lin++,col++;
            g << nr+(lin-1)*i+col <<" ";
        }
    }
    return 0;
}