Cod sursa(job #2154414)

Utilizator anamariatoaderAna Toader anamariatoader Data 6 martie 2018 22:20:14
Problema Teren Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>

using namespace std;
ifstream fin("teren.in");
ofstream fout("teren.out");
int n,m,x,i,j,sum[301][301],Max,st,dr,s;
bool a;
int main()
{
    fin>>n>>m>>x;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++){
            fin>>a;
            sum[i][j]=a+sum[i-1][j];
        }
    Max=0;
    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++){
            st=1;
            s=0;
            for(dr=st;dr<=m;dr++){
                if(s+sum[j][dr]-sum[i-1][dr]<=x){
                    s+=sum[j][dr]-sum[i-1][dr];
                    Max=max(Max,(dr-st+1)*(j-i+1));
                }
                else{
                    while(st<=dr&&s+sum[j][dr]-sum[i-1][dr]>x){
                        s-=(sum[j][st]-sum[i-1][st]);
                        st++;
                    }
                    if(st<=dr){
                            s+=sum[j][dr]-sum[i-1][dr];
                            Max=max(Max,(dr-st+1)*(j-i+1));
                    }
                }
            }
        }
    fout<<Max;
    return 0;
}