Cod sursa(job #2486841)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 3 noiembrie 2019 15:53:54
Problema A+B Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.02 kb
#include <bits/stdc++.h>
#define inf 65000
#define dim 65
using namespace std;

ifstream fin("adunare.in");
ofstream fout("adunare.out");
unsigned short n,t,sol[dim][dim],aux[dim][dim],niv,i,j;
unsigned short T[dim*(dim+1)*(2*dim+1)/6+10],tata[dim][dim];
unsigned short dad,minn,pozi,pozj;
void bordura(unsigned short v[dim][dim],unsigned short n){
for(int i=0;i<=n+1;i++)
    v[0][i]=v[i][0]=v[n+1][i]=v[i][n+1]=inf;
}
void copiez(unsigned short a[dim][dim],unsigned short b[dim][dim],unsigned short n){
for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
        a[i][j]=b[i][j];
}
unsigned short poz(int niv,int i,int j){
niv--;
return (unsigned short)(1LL*(niv*(niv+1)*(2*niv+1))/6+(niv+1)*(i-1)+j);
}
void rec(int x){
    if(x==0)
        return;
rec(T[x]);
fout<<x<<" ";
}
int main(){
    int a,b;
    fin>>a>>b;
    fout<<a+b;
    return  0;
   fin>>n;
   t=1;
    fin>>sol[1][1];
   for(niv=2;t<n;niv++){
         bordura(sol,niv-1);
        for(i=1;i<=niv;i++)
        for(j=1;j<=niv;j++)
            tata[i][j]=poz(niv-1,i,j);
        for(i=1;i<=niv;i++)
        for(j=1;j<=niv;j++){
            fin>>aux[i][j];
            dad=tata[i-1][j-1];
            minn=sol[i-1][j-1];
            if(minn>sol[i-1][j]){
                minn=sol[i-1][j];
                dad=tata[i-1][j];
            }
            if(minn>sol[i][j-1]){
                minn=sol[i][j-1];
                dad=tata[i][j-1];
            }

            if(minn>sol[i][j]){
                minn=sol[i][j];
                dad=tata[i][j];
            }
           // cout<<minn<<endl;
            aux[i][j]+=minn;
            t++;
            T[t]=dad;
        }
        copiez(sol,aux,niv);

   }
   niv--;
   minn=inf;
    for(i=1;i<=niv;i++)
        for(j=1;j<=niv;j++){
            if(minn>sol[i][j]){
                minn=sol[i][j];
                pozi=i;
                pozj=j;
            }
        }
fout<<niv<<" ";
fout<<minn<<"\n";
int x=poz(niv,pozi,pozj);
//cout<<i<<" "<<j<<" "<<niv;
rec(x);
}