Cod sursa(job #1293603)

Utilizator ZeBuGgErCasapu Andreas ZeBuGgEr Data 16 decembrie 2014 09:19:06
Problema Teren Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <iostream>

using namespace std;

long long int ma=0;

bool a[90000][2];

int check(int r,int c,int n,int m,long long int x,long long int pos)
{
    long long int co=0;
        for(int j=0;j<pos;j++)
        {
            if(a[j][0]>=r&&a[j][0]<n&&a[j][1]>=c&&a[j][1]<m)
            {
                co++;
            }
            if(co>x)
            {
                return 0;
            }
        }
    return 1;
}

void leave(int r,int c,int n,int m,long long int x,long long int pos)
{
    if(n!=0&&m!=0&&r<n&&c<m)
    {
    if(check(r,c,n,m,x,pos)==1)
    {
        if(ma<(n-r)*(m-c))
        {
            ma=(n-r)*(m-c);
        }
    }
    else
    {
        leave(r,c,n-1,m,x,pos);
        leave(r,c,n,m-1,x,pos);
        leave(r+1,c,n,m,x,pos);
        leave(r,c+1,n,m,x,pos);
    }
    }
}

int main()
{
    ifstream fin("teren.in");
    ofstream fout("teren.out");
    int n,m,t;
    long long int x,pos=0;
    fin>>n>>m>>x;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            fin>>t;
            if(t==1)
            {
                a[pos][0]=i;
                a[pos][1]=j;
                pos++;
            }
        }
    }
    leave(0,0,n,m,x,pos);
    fout<<ma;
}