Cod sursa(job #3256459)

Utilizator tomavladnicolae@gmail.comTomavlad [email protected] Data 14 noiembrie 2024 17:09:22
Problema Teren Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("teren.in");
ofstream fout("teren.out");
/**
3 5 1
0 1 1 0 1
0 0 0 0 1  l1
0 1 0 0 0
0 0 0 1 0  l2

v=0 1 0 1 1
aflam lg maxima a unei secvente din v de suma<=x
*/
int a[305][305],n,m,x;
int v[305];
int Lgmax()
{
    int i,j,s=0,lmax=0;
    j=1;
    for(i=1; i<=m; i++)
    {
        s+=v[i];
        while(s>x)
        {
            s-=v[j];
            j++;
        }
        lmax=max(lmax,i-j+1);
    }
    return lmax;
}
int main()
{
    int l1,l2,k,i,j,aria=0;
    fin>>n>>m>>x;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
        {
            fin>>a[i][j];
            a[i][j]+=a[i-1][j];
        }
    for(l1=1; l1<=n; l1++)
        for(l2=l1; l2<=n; l2++)
        {
            for(j=1; j<=m; j++)
                v[j]=a[l2][j]-a[l1-1][j];
            k=Lgmax();
            aria=max(aria,k*(l2-l1+1));
        }
    fout<<aria;
    fout.close();
    return 0;
}