Submission #909970

#TimeUsernameProblemLanguageResultExecution timeMemory
909970NonozeGarden (JOI23_garden)C++17
45 / 100
3018 ms13012 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define sz(x) (int)(x.size()) int n, m, D; vector<int> p, q; vector<int> r, s; int subtask4() { int ans=D*D; for (int a=0; a<D; a++) { for (int b=0; b<D; b++) { for (int c=a; c<=a+D; c++) { for (int d=b; d<=b+D; d++) { if ((c-a+1)*(d-b+1)>=ans) continue; bool flag=true; for (int i=0; i<n; i++) { if ((p[i]>=a && p[i]<=c) || (c>=D && p[i]<=c%D)) { if ((q[i]>=b && q[i]<=d) || (d>=D && q[i]<=d%D)) { continue; } } flag=false; break; } if (!flag) { continue; } for (int i=0; i<m; i++) { if ((r[i]>=a && r[i]<=c) || (c>=D && r[i]<=c%D)) { continue; } if ((s[i]>=b && s[i]<=d) || (d>=D && s[i]<=d%D)) { continue; } flag=false; break; } if (flag) { ans=min(ans, (c-a+1)*(d-b+1)); } } } } } return ans; } vector<bool> x(5000, false), y(5000, false); int bruteforces(int empl) { if (empl==m) { int xmax=0, prec=0, prem=-1; for (int i=0; i<D; i++) { xmax=max(xmax, i-prec-1); if (x[i]) { prec=i; if (prem==-1) prem=i; } } xmax=D-xmax; xmax=min(xmax, prec-prem+1); int ymax=0; prec=0, prem=-1; for (int i=0; i<D; i++) { ymax=max(ymax, i-prec-1); if (y[i]) { prec=i; if (prem==-1) prem=i; } } ymax=D-ymax; ymax=min(ymax, prec-prem+1); return xmax*ymax; } bool xx=x[r[empl]], yy=y[s[empl]]; x[r[empl]]=true; int ans=bruteforces(empl+1); x[r[empl]]=xx; y[s[empl]]=true; ans=min(ans, bruteforces(empl+1)); y[s[empl]]=yy; return ans; } int subtask1() { for (auto u: p) x[u]=true; for (auto u: q) y[u]=true; return bruteforces(0); } int solve() { cin >> n >> m >> D; p.resize(n); q.resize(n); r.resize(m); s.resize(m); for (int i=0; i<n; i++) { cin >> p[i] >> q[i]; } for (int i=0; i<m; i++) { cin >> r[i] >> s[i]; } if (D<=100 && n+m<=5000) return subtask4(); return subtask1(); } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout << solve() << endl; 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...