HELPPM - Giúp ngài thủ tướng!
Tác giả: skyvn97
Ngôn ngữ: C++
#include<cstdio>
#define MAX 505
int a[MAX][MAX];
int s[MAX][MAX];
int k;
int m,n;
int res;
int tx,ty,bx,by;
void init(void) {
scanf("%d",&m);
scanf("%d",&n);
scanf("%d",&k);
int i,j;
for (i=0;i<=m;i=i+1) s[i][0]=0;
for (i=0;i<=n;i=i+1) s[0][i]=0;
for (i=1;i<=m;i=i+1)
for (j=1;j<=n;j=j+1) {
scanf("%d",&a[i][j]);
s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j];
}
res=m*n+1;
}
void count(const int &b,const int &c) {
int i,j;
i=1;j=1;
if (res<=c-b+1) return;
if (s[c][n]-s[b-1][n]<k) return;
while (true) {
if (s[c][j]-s[c][i-1]-s[b-1][j]+s[b-1][i-1]>=k) {
if (res>(c-b+1)*(j-i+1)) {
res=(c-b+1)*(j-i+1);
tx=b;ty=i;bx=c;by=j;
}
i++;
}
else {
if (j>=n) break;
else j++;
}
}
}
void process(void) {
int i,j;
for (i=1;i<=m;i=i+1)
for (j=i;j<=m;j=j+1)
count(i,j);
if (res>m*n) printf("-1");
else printf("%d\n%d %d %d %d",res,tx,ty,bx,by);
}
int main(void) {
init();
process();
return 0;
}