Cod sursa(job #2272242)

Utilizator anamariatoaderAna Toader anamariatoader Data 29 octombrie 2018 21:24:25
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>

using namespace std;
ifstream fin("tsunami.in");
ofstream fout("tsunami.out");
int n,m,h,i,j,v[1001][1001],dx[]={0,-1,0,1,0},dy[]={0,0,1,0,-1},nr;
struct numar{
    int l,c;
}q[1000005];
bool viz[1001][1001];
void coada(int i, int j){
    int l,c,lnou,cnou,p,u,r;
    p=u=1;
    q[1].l=i;
    q[1].c=j;
    viz[i][j]=1;
    while(p<=u){
        l=q[p].l;
        c=q[p].c;
        for(r=1;r<=4;r++){
            lnou=l+dx[r];
            cnou=c+dy[r];
            if(v[lnou][cnou]<h && lnou>=1 && lnou<=n && cnou>=1 && cnou<=m && viz[lnou][cnou]==0){
                q[++u].l=lnou;
                q[u].c=cnou;
                viz[lnou][cnou]=1;
                if(v[lnou][cnou]>0)
                    nr++;
            }
        }
        p++;
    }
}
int main()
{
    fin>>n>>m>>h;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            fin>>v[i][j];
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(v[i][j]==0 && viz[i][j]==0)
                coada(i,j);
    fout<<nr;
    return 0;
}