Language: C

#include <iostream>
#include <vector>
#include <stdlib.h>
#include <string.h>
#define nm 51
using namespace std;
int n, m, nrt, a[nm][nm], pc[nm][nm], on[nm][nm], of[nm][nm], timp, viz[nm][nm], viz2[nm][nm], prim, ultim, k, aux[nm*nm], nraux;
vector <int> t[nm][nm];
struct punct
{
    int x, y;
} p[1005], d[]={{0,0},{1,0},{0,1},{-1,0},{0,-1}}, coada[nm*nm];
void citire()
{
    int i, j;
    char c[nm];

    cin>>n>>m>>nrt;

    for(i=0; i<=n+1; i++)
        a[i][0]=a[i][m+1]=-1;
    for(i=0; i<=m+1; i++)
        a[0][i]=a[n+1][i]=-1;

    for(i=1; i<=n; i++)
    {
        cin>>c;
        for(j=0; j<m; j++)
           if(c[j]!='.') a[i][j+1]=-1;
    }
     for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            cin>>pc[i][j];
     for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            cin>>on[i][j];
     for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            cin>>of[i][j];
     for(i=1; i<=nrt; i++)
        {
             cin>>p[i].x>>p[i].y;
             p[i].x++;
             p[i].y++;
        }
}
void drum(int x1, int y11, int x2, int y2)
{
    int i, j, x, y;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            viz2[i][j]=a[i][j];
    viz[x1][y11]= 1;
    viz2[x1][y11]=1;
    prim=ultim=k=1;
    coada[prim].x=x1; coada[prim].y=y11;
    while(k!=0)
    {
        for(i=1; i<=4; i++)
            if((!viz2[coada[prim].x+d[i].x][coada[prim].y+d[i].y])&&(a[coada[prim].x+d[i].x][coada[prim].y+d[i].y]!=-1))
        {
            viz[coada[prim].x+d[i].x][coada[prim].y+d[i].y]=1;
            viz2[coada[prim].x+d[i].x][coada[prim].y+d[i].y]=viz2[coada[prim].x][coada[prim].y]+1;
            ultim++;
            k++;
            coada[ultim].x=coada[prim].x+d[i].x;
            coada[ultim].y=coada[prim].y+d[i].y;
        }
        prim++;
        k--;
    }
    x=x2;
    y=y2;
    do
    {
       for(i=1; i<=4; i++)
        if(viz2[d[i].x+ x][d[i].y+y]== (viz2[x][y]-1))
          {
              t[x][y].push_back(timp+viz2[x][y]-1);
              x=d[i].x+ x;
              y=d[i].y+y;
              break;
          }
    }
    while((x1!=x)||(y11!=y));

    timp+=(viz2[x2][y2]-1);
}
void solve()
{
    int i, j, k;
    long long sol=0;
     t[p[1].x][p[1].y].push_back(0);
    for(i=1; i<nrt; i++)
        drum(p[i].x, p[i].y, p[i+1].x, p[i+1].y);//lee
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
           if(viz[i][j])
    {
         ///la prima trecere becul on si la ultima becul off
        sol+=(on[i][j]+of[i][j]);
        nraux=0;
        for(auto it=t[i][j].begin(); it!=t[i][j].end(); ++it)
            {
                nraux++;
                aux[nraux]=*it;
            }
        for(k=1; k<nraux; k++)
        {
            int dif=aux[k+1]-aux[k];
            if((on[i][j]+of[i][j])< dif* pc[i][j])
                sol+=on[i][j]+of[i][j];
            else
                sol+=dif* pc[i][j];
        }
    }
    cout<<sol;
}
void afis()
{
    int i, j;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(viz[i][j])
    {
        cout<<"room "<<i<<' '<<j<<"\n";
        for(auto it=t[i][j].begin(); it!=t[i][j].end(); ++it)
            cout<<(*it)<<' ';
        cout<<"\n";
    }
}
int main()
{
    citire();
    solve();
   // afis();
    return 0;
}



Compiler output:
main.c:1:10: fatal error: iostream: No such file or directory
    1 | #include <iostream>
      |          ^~~~~~~~~~
compilation terminated.