HELPPM - Giúp ngài thủ tướng!

Tác giả: khuc_tuan

Ngôn ngữ: C++

#include <stdio.h>
#include <string.h>

int m, n, k;
int a[505][505];
long long d[505];

int main() {
	scanf("%d%d%d", &m, &n, &k);
	for(int i=0;i<m;++i)
		for(int j=0;j<n;++j)
			scanf("%d", a[i]+j);
	int smin = 1000000000, x, y, u, v;
	int inf = 1000000000;
	for(int i1=0;i1<m;++i1) {
		memset( d, 0, sizeof(d));
		for(int i2=i1;i2<m;++i2) {
			int mm = 1000000000;
			int bd, kt;
			long long cur = 0;
			for(int j=0, tr=0;j<n;++j) {
				d[j] += a[i2][j];
				cur += d[j];
				while(cur-d[tr]>=k) { cur -= d[tr]; ++tr; }
				if(cur>=k && mm>j-tr) {
					mm = j - tr;
					bd = tr;
					kt = j;
				}
			}
			++mm;
			if(mm<1000000000 && mm * (i2-i1+1) < smin) {
				smin = mm * (i2-i1+1);
				x = i1;
				u = i2;
				y = bd;
				v = kt;
			}
		}
	}
	if(smin==1000000000) printf("-1\n");
	else printf("%d\n%d %d %d %d", smin, x+1, y+1, u+1, v+1);
	return 0;
}

Download