제출 #936022

#제출 시각아이디문제언어결과실행 시간메모리
936022RegulusZemljište (COCI22_zemljiste)C++17
0 / 70
1 ms2396 KiB
#include <bits/stdc++.h> #define IO ios::sync_with_stdio(false);cin.tie(0); #define debug(x) cerr << #x << " = " << (x) << ' ' #define bug(x) cerr << (x) << ' ' #define endl cerr << '\n' #define all(v) (v).begin(), (v).end() #define SZ(v) (ll)(v).size() #define lowbit(x) (x)&-(x) #define pb emplace_back #define F first #define S second using namespace std; using ll = long long; using pll = pair<ll, ll>; //#define TEST const int N = 505; const ll LLINF = 2e18; ll a[N][N], sum[N], col[N][N]; set<ll> st; int main(void) { IO ll n, i, m, L, R, ans = LLINF; cin >> n >> m >> L >> R; if (L > R) swap(L, R); for (i=1; i <= n; ++i) for (int j=1; j <= m; ++j) cin >> a[i][j], col[i][j] = col[i-1][j] + a[i][j]; for (int lb=0; lb < n; ++lb) { for (int ub=lb+1; ub <= n; ++ub) { st.clear(); st.insert(0); for (i=1; i <= m; ++i) { sum[i] = sum[i-1] + col[ub][i]-col[lb][i]; auto it = st.lower_bound(sum[i]-R); auto it2 = st.upper_bound(sum[i]-L); if (it != it2) { ans = R - L; } else { if (it != st.end()) { ll x = sum[i] - *it; //debug(i), debug(*it), debug(x), endl; ans = min(ans, abs(R-x) + abs(L-x)); } } st.insert(sum[i]); } } } cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...