/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 540.0 KiB
#2 Wrong Answer 12ms 796.0 KiB
#3 Wrong Answer 7ms 972.0 KiB

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;

#define pb push_back
#define MOD 1000000007
#define vll vector<ll>
#define pll pair<ll, ll>
#define endl "\n" 
#define all(v) v.begin(), v.end()
#define mem(a,b) memset(a, b, sizeof(a))
#define co(n) cout << n << endl
#define yes cout << "YES" << endl
#define no cout << "NO" << endl
#define fr(x, n) for (int i = x; i < n; ++i)
#define fraction(x) cout << fixed << setprecision(x)
#define Baba_Yaga ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
 
const double eps = 1e-9;
const int N = 2e5+123;

ll gcd(ll a,ll b) { return __gcd(a,b); }
ll lcm(ll a,ll b) { return (a*b)/__gcd(a,b); }

int dx[] = {0, 0, 1, -1, 1, -1, -1, 1};
int dy[] = {1, -1, 0, 0, 1, -1, 1, -1};

void solve()
{
    ll n, m; cin >> n >> m;
    char arr[n+1][m+1];

    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            cin >> arr[i][j];
        }
    }
    ll l_r[n+2][m+2], r_l[n+2][m+2], u_d[n+2][m+2], d_u[n+2][m+2];

    for(int i=0; i<=n+1; i++)
    {
        for(int j=0; j<=m+1; j++)
        {
            l_r[i][j] = 0, r_l[i][j] = 0, u_d[i][j] = 0, d_u[i][j] = 0;
        }
    }
    
    //left right 
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            if(arr[i][j] == '-')
            {
                l_r[i][j] = 0;
            }
            else l_r[i][j] = 1 + l_r[i][j-1];
        }
    }

    for(int i=1; i<=n; i++)
    {
        for(int j=m; j>=1; j--)
        {
            if(arr[i][j] == '-')
            {
                r_l[i][j] = 0;
            }
            else r_l[i][j] = 1 + l_r[i][j+1];
        }
    }

    // up down

    for(int j=1; j<=m; j++)
    {
        for(int i=1; i<=n; i++)
        {
            if(arr[i][j] == '-')
            {
                u_d[i][j] = 0;
            }
            else u_d[i][j] = 1 + u_d[i-1][j];
        }
    }

    for(int j=1; j<=m; j++)
    {
        for(int i=n; i>=1; i--)
        {
            if(arr[i][j] == '-')
            {
                d_u[i][j] = 0;
            }
            else d_u[i][j] = 1 + d_u[i+1][j];
        }
    }

    ll ans = 0;

    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            if(arr[i][j] == '+')
            {
                ll val = min({ u_d[i-1][j], d_u[i+1][j], l_r[i][j-1], r_l[i][j+1]});
                val *= 4;
                val++;
                ans = max(ans, val);
            }
        }
    }
    cout << ans << endl;


}

// --- Think the problem backwards ---

int main()
{
    Baba_Yaga;
    ll tc = 1; cin >> tc;
    while(tc--) solve();
}

Information

Submit By
Type
Submission
Problem
P1143 Plus of Pluses
Language
C++17 (G++ 13.2.0)
Submit At
2025-04-18 19:26:24
Judged At
2025-04-18 19:26:25
Judged By
Score
2
Total Time
12ms
Peak Memory
972.0 KiB