#include "locmin.h"
#include<bits/stdc++.h>
using namespace std;
long long a[507][507];
bool u[507][507];
long long val(int r,int c)
{
    if(u[r][c])
    {
        return a[r][c];
    }
    u[r][c]=1;
    a[r][c]=value(r,c);
    return a[r][c];
}
std::pair <int, int> find_locmin_point(int N, int M) {
    int lc=1,rc=M;
    int lr=1,rr=N;
    for(int i=1;i<=N;i++)
    {
        for(int j=1;j<=M;j++)
        {
            u[i][j]=0;
        }
    }
    while(lc<rc || lr<rr)
    {
        if(rr-lr+1<rc-lc+1)
        {
            int mc=(lc+rc)/2;
            long long m1=LLONG_MAX;
            long long m2=LLONG_MAX;
            for(int i=lr;i<=rr;i++)
            {
                m1=min(m1,val(i,mc));
                m2=min(m2,val(i,mc+1));
            }
            if(m1<m2)
            {
                rc=mc;
            }
            else
            {
                lc=mc+1;
            }
        }
        else
        {
            int mr=(lr+rr)/2;
            long long m1=LLONG_MAX;
            long long m2=LLONG_MAX;
            for(int i=lc;i<=rc;i++)
            {
                m1=min(m1,val(mr,i));
                m2=min(m2,val(mr+1,i));
            }
            if(m1<m2)
            {
                rr=mr;
            }
            else
            {
                lr=mr+1;
            }
        }
    }
    return {lr,lc};
}
