904 2022. 01. 26 14:29:40 Babják Péter Sivatag cpp11 Elfogadva 40/40 108ms 28056 KiB
#include <bits/stdc++.h>
#define MAXN 1005
#define int long long
using namespace std;
int n,m,k,e;
int t1[MAXN][MAXN];
int g[MAXN][MAXN];
signed main()
{
	cin>>m>>n>>k>>e;

	for(int i=0;i<e;i++)
	{
		int a,b,c,d;
		cin>>b>>a>>d>>c;
		a=(n+1)-a;
		c=(n+1)-c;
		t1[a+1][b]--;
		t1[c][b]++;
		t1[c][d+1]--;
		t1[a+1][d+1]++;
	}
	for(int i=0;i<=n;i++)
	{
		int akt=0;
		for(int j=0;j<=m;j++)
		{
			akt+=t1[i][j];
			t1[i][j]=akt;
		}
	}
	for(int j=0;j<=m;j++)
	{
		int akt=0;
		for(int i=0;i<=n;i++)
		{
			akt+=t1[i][j];
			t1[i][j]=akt;
		}
	}

	for(int j=1;j<=m;j++)
	{
		for(int i=1;i<=k;i++)
		{
			g[1][j]+=t1[i][j];
		}
		for(int i=2;i+k-1<=n;i++)
		{
			g[i][j]=g[i-1][j]+t1[i+k-1][j]-t1[i-1][j];
		}
	}
	int ans=0,ansi=n,ansj=1;
	for(int i=1;i+k-1<=n;i++)
	{
		int sum=0,psum=0;
		for(int j=1;j<=k;j++)psum+=g[i][j];
		if(psum>ans)
		{
			ans=psum;
			ansi=i+k-1;
			ansj=1;
		}
		for(int j=2;j+k-1<=m;j++)
		{
			sum=psum-g[i][j-1]+g[i][j+k-1];
			if(sum>ans)
			{
				ans=sum;
				ansi=i+k-1;
				ansj=j;
			}
			psum=sum;
		}
		
	}
	cout<<ans<<'\n'<<ansj<<" "<<(n+1)-ansi;
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 2ms 1864 KiB
2 Elfogadva 0/0 93ms 13216 KiB
3 Elfogadva 2/2 2ms 5236 KiB
4 Elfogadva 2/2 4ms 9304 KiB
5 Elfogadva 2/2 12ms 19008 KiB
6 Elfogadva 2/2 25ms 19016 KiB
7 Elfogadva 2/2 13ms 19020 KiB
8 Elfogadva 2/2 13ms 19032 KiB
9 Elfogadva 2/2 2ms 4784 KiB
10 Elfogadva 2/2 3ms 7320 KiB
11 Elfogadva 2/2 10ms 17280 KiB
12 Elfogadva 2/2 8ms 15564 KiB
13 Elfogadva 2/2 10ms 14784 KiB
14 Elfogadva 2/2 8ms 13244 KiB
15 Elfogadva 1/1 108ms 11900 KiB
16 Elfogadva 1/1 103ms 16868 KiB
17 Elfogadva 1/1 50ms 22072 KiB
18 Elfogadva 1/1 82ms 17904 KiB
19 Elfogadva 2/2 92ms 21544 KiB
20 Elfogadva 2/2 97ms 19776 KiB
21 Elfogadva 2/2 101ms 24352 KiB
22 Elfogadva 2/2 101ms 23836 KiB
23 Elfogadva 2/2 101ms 26876 KiB
24 Elfogadva 2/2 101ms 28056 KiB