Submission #847079

#TimeUsernameProblemLanguageResultExecution timeMemory
847079PacybwoahZemljište (COCI22_zemljiste)C++17
70 / 70
264 ms6992 KiB
#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
#define ll long long
using namespace std;
int main(){
    int r,s;
    cin>>r>>s;
    ll a,b;
    cin>>a>>b;
    if(a>b) swap(a,b);
    vector<vector<ll> > vec(r,vector<ll>(s)),pree(r,vector<ll>(s));
    for(int i=0;i<r;i++) for(int j=0;j<s;j++) cin>>vec[i][j];
    for(int i=0;i<s;i++){
        pree[0][i]=vec[0][i];
        for(int j=1;j<r;j++) pree[j][i]=pree[j-1][i]+vec[j][i];
    }
    ll ans=1e10;
    for(int i=0;i<r;i++){
        for(int j=i;j<r;j++){
            vector<ll> pre(s+1);
            if(i==0) for(int k=0;k<s;k++) pre[k+1]=pre[k]+pree[j][k];
            else for(int k=0;k<s;k++) pre[k+1]=pre[k]+(pree[j][k]-pree[i-1][k]);
            for(int le=0,rt=1;le<s&&rt<=s;le++){
                while(rt<=s&&pre[rt]-pre[le]<a) rt++;
                if(rt<=s){
                    if(pre[rt]-pre[le]<=b) ans=b-a;
                    else ans=min(ans,2*(pre[rt]-pre[le])-b-a);
                }
                if(rt-1>le){
                    ans=min(ans,b+a-2*(pre[rt-1]-pre[le]));
                }
            }
        }
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...