Cod sursa(job #1582633)

Utilizator hrazvanHarsan Razvan hrazvan Data 28 ianuarie 2016 10:34:07
Problema Teren Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#define MAXN 300
int ma[MAXN][MAXN], v[MAXN];

int main(){
  FILE *in = fopen("teren.in", "r");
  int n, m, x, max = 0, i, j, k, st, sum;
  fscanf(in, "%d%d%d", &n, &m, &x);
  for(i = 0; i < n; i++)
    for(j = 0; j < m; j++)
      fscanf(in, "%d", &ma[i][j]);
  fclose(in);
  for(i = 0; i < n; i++){
    memset(v, 0, sizeof v);
    for(j = i; j < n; j++){
      for(k = 0; k < m; k++)
        v[k] += ma[j][k];
      st = sum = 0;
      for(k = 0; k < m; k++){
        sum += v[k];
        while(sum > x){
          sum -= v[st];
          st++;
        }
        if((j - i + 1) *(k - st + 1) > max)
          max = (j - i + 1) *(k - st + 1);
      }
    }
  }
  FILE *out = fopen("teren.out", "w");
  fprintf(out, "%d", max);
  fclose(out);
  return 0;
}