Cod sursa(job #2338663)

Utilizator T_george_TGeorge Teodorescu T_george_T Data 7 februarie 2019 18:05:23
Problema Castel Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("castel.in");
ofstream out("castel.out");
int p,n,cnt,a[101][101],b[101][101],maxim=0,maxi,xf,yf,x,y,I,J,xi,yi;
void fa_fill(int i,int j){
    if(b[i][j]==0){
        b[i][j]=1;
            maxim++;
        if(i>=x && i>=1 && j<=n && j>=1 && j<=n){
            x=i;
            y=max(j,y);
        }
        if(!(a[i][j] & 1) && j-1>=1)fa_fill(i,j-1);
        if(!(a[i][j] & 2) && i+1<=n)fa_fill(i+1,j);
        if(!(a[i][j] & 4) && j+1<=n)fa_fill(i,j+1);
        if(!(a[i][j] & 8) && i-1>=1)fa_fill(i-1,j);
    }
}
int main()
{
    in>>p>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
    in>>a[i][j];
    if(p==1){
       for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(a[i][j]==11 || a[i][j]==13 || a[i][j]==15 || a[i][j]==9) cnt++;
        out<<cnt;
       }
    else {
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
            if(a[i][j]==11 || a[i][j]==13 || a[i][j]==15 || a[i][j]==9){
                    I=i;
               J=j;
                fa_fill(i,j);
            if(maxim>maxi){
                xi=i;
                yi=j;
                xf=x;
                yf=y;
                maxi=maxim;
            }
            maxim=0;}
        }
        if(p==2)
        out<<maxi;
        else
            out<<xi<<" "<<yi<<" "<<xf<<" "<<yf;
    }
    return 0;
}