Submission #204077

#TimeUsernameProblemLanguageResultExecution timeMemory
204077KastandaDango Maker (JOI18_dango_maker)C++11
13 / 100
5 ms380 KiB
// In The Name Of The Queen
#include<bits/stdc++.h>
using namespace std;
const int N = 3003;
int n, m, cnt;
bool M[N][N];
char S[N][N];
inline bool Horz(int i, int j)
{
    if (M[i][j] || M[i][j + 1] || M[i][j + 2])
        return 0;
    return (S[i][j] == 'R' && S[i][j + 1] == 'G' && S[i][j + 2] == 'W');
}
inline bool Vert(int i, int j)
{
    if (M[i][j] || M[i + 1][j] || M[i + 2][j])
        return 0;
    return (S[i][j] == 'R' && S[i + 1][j] == 'G' && S[i + 2][j] == 'W');
}
inline void MakeHorz(int i, int j)
{
    M[i][j] = M[i][j + 1] = M[i][j + 2] = 1;
}
inline void MakeVert(int i, int j)
{
    M[i][j] = M[i + 1][j] = M[i + 2][j] = 1;
}
int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i ++)
        scanf("%s", &S[i]);
    for (int d = 0; d < n + m - 1; d ++)
    {
        int l = max(d - m + 1, 0);
        int r = min(d, n - 1);
        for (int i = l; i <= r;)
        {
            int j1 = i, j2 = i;
            while (j1 <= r && Horz(j1, d - j1))
                j1 ++;
            while (j2 <= r && Vert(j2, d - j2))
                j2 ++;
            if (j1 == i && j2 == i)
                {i ++; continue;}
            if (j1 < j2)
            {
                cnt += j2 - i;
                for (int j = i; j < j2; j ++)
                    MakeVert(j, d - j);
                i = j2;
            }
            else
            {
                cnt += j1 - i;
                for (int j = i; j < j1; j ++)
                    MakeHorz(j, d - j);
                i = j1;
            }
        }
    }
    return !printf("%d\n", cnt);
}

Compilation message (stderr)

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:32:26: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'char (*)[3003]' [-Wformat=]
         scanf("%s", &S[i]);
                     ~~~~~^
dango_maker.cpp:30:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
dango_maker.cpp:32:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%s", &S[i]);
         ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...