Submission #1272279

#TimeUsernameProblemLanguageResultExecution timeMemory
1272279sakkaZemljište (COCI22_zemljiste)C++20
0 / 70
3 ms5156 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define pll pair<long long, long long> #define fi first #define sec second #define ld long double using namespace std; void freop(){ freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); } const ll INF = 1e18, mod = 1e9+7; ll r, c, a, b; vector<vector<ll>>val(502, vector<ll>(502)); vector<vector<ll>>pref(502, vector<ll>(502)); void solve(){ cin >> r >> c >> a >> b; if(a > b) swap(a, b); for(int i=1; i<=r; i++){ for(int j=1; j<=c; j++){ cin >> val[i][j]; } } for(int i=1; i<=r; i++){ for(int j=1; j<=c; j++){ pref[i][j] = val[i][j] + pref[i-1][j] + pref[i][j-1] - pref[i-1][j-1]; // cout << i << " " << j << " " << pref[i][j] << endl; } } ll ans = INF; for(int i=2; i<=r; i++){ for(int j=2; j<=c; j++){ for(int k=i-1; k>=0; k--){ // last element smaller than a; ll l=0, r=j, cari = -1, cari2 = -1; while(l<=r){ ll mid = (l+r)/2; // cout << mid << " " << pref[i][j] - pref[i][mid] - pref[k][j] + pref[k][mid] << endl; if(pref[i][j] - pref[i][mid] - pref[k][j] + pref[k][mid] > a){ l = mid+1; cari = mid; } else r = mid-1; } l=0; r=j; while(l<=r){ ll mid = (l+r)/2; if(pref[i][j] - pref[i][mid] - pref[k][j] + pref[k][mid] > b){ l = mid+1; cari2 = mid; } else r = mid-1; } // cout << cari << " " << cari2 << endl; if(cari != -1) ans = min(ans, abs(a-(pref[i][j]-pref[i][cari]-pref[k][j]+pref[k][cari])) + abs(b-(pref[i][j]-pref[i][cari]-pref[k][j]+pref[k][cari]))); if(cari < j) ans = min(ans, abs(a-(pref[i][j]-pref[i][cari+1]-pref[k][j]+pref[k][cari+1])) + abs(b-(pref[i][j]-pref[i][cari+1]-pref[k][j]+pref[k][cari+1]))); if(cari2 != -1) ans = min(ans, abs(a-(pref[i][j]-pref[i][cari2]-pref[k][j]+pref[k][cari2])) + abs(b-(pref[i][j]-pref[i][cari2]-pref[k][j]+pref[k][cari2]))); if(cari2 < j) ans = min(ans, abs(a-(pref[i][j]-pref[i][cari2+1]-pref[k][j]+pref[k][cari2+1])) + abs(b-(pref[i][j]-pref[i][cari2+1]-pref[k][j]+pref[k][cari2+1]))); } } } cout << ans << endl; } int main(){ ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0); // freop(); solve(); }

Compilation message (stderr)

Main.cpp: In function 'void freop()':
Main.cpp:10:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     freopen("input.txt", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:11:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     freopen("output.txt", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...