Cod sursa(job #1293604)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 16 decembrie 2014 09:24:21
Problema Teren Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.23 kb
#include <stdio.h>
bool b[301][301];
int a[301][301];
int c[301][301];
int n,m,x;
int main()
{
    FILE *fin,*fout;
    fin=fopen("teren.in","r");
    fout=fopen("teren.out","w");
    fscanf(fin,"%d %d %d",&n,&m,&x);
    for(int i=1;i<=n;i++)
    {
            for(int j=1;j<=m;j++) fscanf(fin,"%d",&b[i][j]);
    }
    for(int i=1;i<=n;i++) 
    {
            for(int j=1;j<=m;j++)
            {
                    a[i][j]=b[i][j]+a[i][j-1];      
            }
    }
    int count=0,sum=0,max=0,xcor;
    for(int i=1;i<=n;i++)
    {
            for(int j=1;j<=m;j++)
            {
                    if(a[i][j]<=x)
                    {
                                  xcor=i+1;
                                  count=a[i][j];
                                  sum=j;
                                  while(a[xcor][j]+count<=x&&xcor<=n)
                                  {
                                                            count+=a[xcor][j];
                                                            sum+=j;
                                                            xcor++;
                                  }
                                  if(max<sum) max=sum;
                    }
            }
    }
    for(int i=1;i<=m;i++)
    {
            for(int j=1;j<=n;j++)
            {
                   c[j][i]=b[j][i]+c[j-1][i];
            }
    }
    for(int i=1;i<=m;i++)
    {
            for(int j=1;j<=n;j++)
            {
                    if(a[j][i]<=x)
                    {
                                  xcor=j+1;
                                  count=a[j][i];
                                  sum=i;
                                  while(a[xcor][i]+count<=x&&xcor<=n)
                                  {
                                                                     count+=a[xcor][i];
                                                                     sum+=i;
                                                                     xcor++;
                                  }
                                  if(max<sum) max=sum;
                    }
            }
    } 
    fprintf(fout,"%d",max);
    fclose(fin);
    fclose(fout);
    return 0;
}