Submission #718271

#TimeUsernameProblemLanguageResultExecution timeMemory
718271AugustynZemljište (COCI22_zemljiste)C++17
70 / 70
772 ms4796 KiB
#include<iostream>
using namespace std;
int r,s,a,b;
long long **sum_pr,odp;
long long *dokad;
void inicjuj()
{
    if(a>b)
    swap(a,b);
    odp=a+b;
    sum_pr=new long long *[s+1];
    for(int i=0;i<=s;++i)
        sum_pr[i]=new long long [r+1];
    dokad=new long long[r+1];
}
long long sum_prost(int xpd,int ypd,int xlg,int ylg)
{
    return sum_pr[xpd][ypd]-sum_pr[xlg-1][ypd]-sum_pr[xpd][ylg-1]+sum_pr[xlg-1][ylg-1];
}
int main()
{
    scanf("%d%d%d%d",&r,&s,&a,&b);
    inicjuj();
    for(int i=1;i<=r;++i)
    {
        for(int j=1;j<=i;++j)
            dokad[j]=1;
        for(int j=1;j<=s;++j)
        {
            scanf("%lld",&sum_pr[j][i]);
            sum_pr[j][i]+=sum_pr[j-1][i]+sum_pr[j][i-1]-sum_pr[j-1][i-1];
            for(int k=i;k>0;--k)
            {
                while(dokad[k]<j)
                {
                       
                    if(sum_prost(j,i,dokad[k],k)<=a)
                        break;
                    ++dokad[k];
                }
                odp=min(odp,abs(a-sum_prost(j,i,dokad[k],k))+abs(b-sum_prost(j,i,dokad[k],k)));
                if(dokad[k]>1)
                odp=min(odp,abs(a-sum_prost(j,i,dokad[k]-1,k))+abs(b-sum_prost(j,i,dokad[k]-1,k)));
            }
        }
    }
    printf("%lld",odp);
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   22 |     scanf("%d%d%d%d",&r,&s,&a,&b);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:30:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |             scanf("%lld",&sum_pr[j][i]);
      |             ~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...