제출 #995341

#제출 시각아이디문제언어결과실행 시간메모리
995341jcelinCultivation (JOI17_cultivation)C++14
15 / 100
333 ms604 KiB
#include<bits/stdc++.h>

using namespace std;

#define X first
#define Y second
#define PB push_back
#define PPB pop_back
#define all(x) (x).begin(), (x).end()

typedef vector<int> vi; 
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long double ld;

const int MAXN = 47;
const int logo = 21;
const int off = 1 << logo;
const int trsz = off << 1;
const int mod = 1e9 + 7;
const int inf = mod;

vii inp;
int pf[MAXN][MAXN];
int n, r, c;

int check(int a, int b, int e){
	for(int i=1; i<=r; i++) for(int j=1; j<=c; j++) pf[i][j] = 0;
	
	for(auto &x : inp){
		int up = max(1, x.X - a);
		int dwn = min(r, x.X + b);
		int le = max(1, x.Y - e);
		int ri = x.Y;
		
		pf[up][le]++;
		if(ri != c) pf[up][ri + 1]--;
		
		if(dwn != r){
			pf[dwn + 1][le]--;
			if(ri != c) pf[dwn + 1][ri + 1]++;
		}
	}
	
	for(int i=1; i<=r; i++){
		for(int j=1; j<=c; j++){
			pf[i][j] += pf[i - 1][j];
		}
	}
	
	
	for(int i=1; i<=r; i++){
		for(int j=1; j<=c; j++){
			pf[i][j] += pf[i][j - 1];
		}
	}
	
	
	int ret = 0;
	for(int i=1; i<=r; i++){
		int ls = -1;
		for(int j=1; j<=c; j++){
			if(pf[i][j] == 0 and ls == -1) ret = inf;
			
			if(pf[i][j] == 0) ret = max(ret, j - ls);
			else ls = j;
		}
	}
	
	return ret;
}

void solve(){
	cin >> r >> c >> n;
	for(int i=1; i<=n; i++){
		int x, y;
		cin >> x >> y;
		inp.PB({x, y});
	}
	
	int ans = inf;
	for(int i=0; i<=r; i++){
		for(int j=0; j<=r; j++){
			for(int k=0; k<=c; k++){
				ans = min(ans, i + j + k + check(i, j, k));
			}
		}
	}
	cout << ans << "\n";
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int tt = 1;
	//cin >> t;
	while(tt--) solve();
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...