Submission #1339807

#TimeUsernameProblemLanguageResultExecution timeMemory
1339807tudor_costinSuperpiece (EGOI22_superpiece)C++20
0 / 100
3 ms344 KiB
#include <bits/stdc++.h>

using namespace std;
void solve()
{
    string s;
    cin>>s;
    assert(s=="N");
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    int p=abs(a-c),q=abs(b-d);
    int maxi=max(p,q);
    int mini=min(p,q);
    pair<int,int> op={maxi/2,maxi%2};
    int tr=op.first+op.second*2;
    if(tr%2!=mini%2)
    {
        if(op.second==0)
        {
            op.first--;
            op.second=2;
        }
        else op.first++;
    }
    tr=op.first+op.second*2;
    bool only4=0;
    if(op.first==0) only4=1;
    pair<int,int> I={-tr,tr};
    int ans;
    if(-tr<=mini && mini<=tr)
    {
        if(!only4)
        {
            ans=op.first+op.second;
            cout<<ans<<'\n';
            return;
        }
        else if(mini%4==0)
        {
            ans=op.first+op.second;
            cout<<ans<<'\n';
            return;
        }
        else
        {
            ans=op.first+op.second+2;
            cout<<ans<<'\n';
            return;
        }
    }
    int dist;
    if(mini>tr) dist=mini-tr;
    else dist=-tr-mini;
    ans=op.first+op.second;
    if(dist%4==0)
    {
        ans=ans+dist/2;
        cout<<ans<<'\n';
        return;
    }
    else if(!only4)
    {
        dist+=2;
        ans=ans+dist/2;
        cout<<ans<<'\n';
        return;
    }
    else
    {
        dist-=2;
        ans=ans+dist/2+2;
        cout<<ans<<'\n';
        return;
    }
    cout<<ans<<'\n';
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...