Cod sursa(job #2854486)

Utilizator IeremiaNicolaescu Ieremia Ieremia Data 21 februarie 2022 14:11:46
Problema Teren Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("teren.in");
ofstream fout("teren.out");
int n,m,y,x,sum[301][301],st,dr,i,j,maxim,l1,l2,s;
int main()
{
    fin>>n>>m>>x;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            fin>>y;
            sum[i][j]=sum[i-1][j]+y;
            ///sume partiale pe colana
            ///suma tuturor elementelor de p e coloana j pana in linia i
        }
    }
    for(l1=1; l1<=n; l1++) ///l1 linia de sus
    {
        for(l2=l1; l2<=n; l2++) ///l2 linia de jos
        {
            st=1;///coloana din stanga
            s=0;
            for(dr=1; dr<=m; dr++)
                s=s+sum[l2][dr]-sum[l1-1][dr];
            while(st<=dr&&s>x)
            {
                s=s-sum[l2][st]+sum[l1-1][st];
                st++;
            }
            if(maxim<(l2-l1+1)*(dr-st+1))///comparam maximul cu aria patrulaterului determinat
                maxim=(l2-l1+1)*(dr-st+1);
        }
    }
    fout<<maxim;
    return 0;
}