Submission #1294987

#TimeUsernameProblemLanguageResultExecution timeMemory
1294987Hamed_GhaffariCultivation (JOI17_cultivation)C++20
30 / 100
54 ms804 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; #define X first #define Y second #define mid ((l+r)>>1) #define lc id<<1 #define rc lc|1 #define all(x) x.begin(), x.end() #define SZ(x) int(x.size()) #define mins(a, b) (a = min(a, b)) #define maxs(a, b) (a = max(a, b)) int n, R, C, ans; pii a[303]; vector<int> vec[42]; int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> R >> C >> n; for(int i=1; i<=n; i++) cin >> a[i].X >> a[i].Y; sort(a+1, a+n+1, [&](pii x, pii y) { return x.Y < y.Y; }); ans = 1e9; for(int u=0; u<R; u++) for(int d=0; d<R; d++) { for(int i=1; i<=R; i++) vec[i].clear(); for(int i=1; i<=n; i++) for(int x=max(1, a[i].X-u); x<=R && x<=a[i].X+d; x++) if(vec[x].empty() || vec[x].back()!=a[i].Y) vec[x].push_back(a[i].Y); bool bad = 0; int mn = -1e9, mx = -1e9, mxe = 0; for(int i=1; i<=R; i++) { if(vec[i].empty()) { bad = 1; break; } maxs(mn, C-vec[i].back()); maxs(mx, vec[i][0]-1); for(int j=1; j<SZ(vec[i]); j++) maxs(mxe, vec[i][j]-vec[i][j-1]-1); } if(bad) continue; mins(ans, u + d + max(mxe, mx+mn)); } cout << ans << '\n'; 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...