Submission #1242799


Source Code Expand

#define _CRT_SECURE_NO_WARNINGS
#include <array>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <vector>

using namespace std;

const char cir = 'o';
const char crs = 'x';
const char dot = '.';

int R, C, K;

vector<string> row;
vector<string> col;

vector< vector<int> > rasc;
vector< vector<int> > rdsc;

vector< vector<int> > casc;
vector< vector<int> > cdsc;

void continuity(vector< vector<int> > &asc, vector< vector<int> > &dsc,
    const char c)
{
    int fst = 'c' == c ? C : R;
    int snd = 'c' == c ? R : C;

    vector<string> cr = 'c' == c ? col : row;

    for (int i = 0; i < fst; i++)
    {
        int tmp = 0;
        for (int j = 0; j < snd; j++)
        {
            if (cir == cr[i][j])
            {
                tmp++;
                asc[i][j] = tmp;
            }
            else tmp = 0;
        }
    }

    for (int i = 0; i < fst; i++)
    {
        int tmp = 0;
        for (int j = snd - 1; 0 <= j; j--)
        {
            if (cir == cr[i][j])
            {
                tmp++;
                dsc[i][j] = tmp;
            }
            else tmp = 0;
        }
    }
}

int main()
{
    if (scanf("%d%d%d", &R, &C, &K) < 3) return 0;

    row.resize(R);
    col.resize(C);

    for (int i = 0; i < R; i++)
    {
        char s[500];
        if (scanf("%s", s) < 1) return 0;
        row[i] = s;
    }

    for (int i = 0; i < C; i++)
    {
        string str(R, dot);
        col[i] = str;
        for (int j = 0; j < R; j++) col[i][j] = row[j][i];
    }

    rasc = vector< vector<int> >(R, vector<int>(C, 0));
    rdsc = vector< vector<int> >(R, vector<int>(C, 0));
    continuity(rasc, rdsc, 'r');

    casc = vector< vector<int> >(C, vector<int>(R, 0));
    cdsc = vector< vector<int> >(C, vector<int>(R, 0));
    continuity(casc, cdsc, 'c');

    int cnt = 0;
    for (int i = K - 1; i <= R - K; i++)
    {
        for (int j = K - 1; j <= C - K; j++)
        {
            bool flg = true;
            // same row
            if (K <= rasc[i][j] && K <= rdsc[i][j])
            {
                for (int k = j - K + 1; k <= j + K - 1; k++)
                {
                    // distance from center
                    int dst = abs(j - k);
                    int tgt = K - dst;
                    if ((casc[k][i] < tgt)
                        || (cdsc[k][i] < tgt))
                    {
                        flg = false;
                        break;
                    }
                }
            }
            else
            {
                flg = false;
                break;
            }

            if (flg) cnt++;
        }
    }

    printf("%d\n", cnt);
    return 0;
}

Submission Info

Submission Time
Task C - 菱型カウント
User ShinjiSHIBATA
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2793 Byte
Status WA
Exec Time 43 ms
Memory 4980 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 0 / 30 0 / 70
Status
AC × 3
AC × 10
WA × 13
AC × 19
WA × 24
Set Name Test Cases
Sample subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt
Subtask1 subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt
Subtask2 subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt
Case Name Status Exec Time Memory
subtask0-sample01.txt AC 1 ms 256 KB
subtask0-sample02.txt AC 1 ms 256 KB
subtask0-sample03.txt AC 1 ms 256 KB
subtask1-01.txt WA 1 ms 256 KB
subtask1-02.txt WA 1 ms 256 KB
subtask1-03.txt AC 1 ms 256 KB
subtask1-04.txt WA 1 ms 256 KB
subtask1-05.txt WA 1 ms 256 KB
subtask1-06.txt WA 1 ms 256 KB
subtask1-07.txt WA 1 ms 256 KB
subtask1-08.txt AC 1 ms 256 KB
subtask1-09.txt WA 1 ms 256 KB
subtask1-10.txt AC 1 ms 256 KB
subtask1-11.txt WA 1 ms 256 KB
subtask1-12.txt WA 1 ms 256 KB
subtask1-13.txt WA 1 ms 256 KB
subtask1-14.txt AC 1 ms 256 KB
subtask1-15.txt AC 1 ms 256 KB
subtask1-16.txt AC 1 ms 256 KB
subtask1-17.txt WA 1 ms 256 KB
subtask1-18.txt WA 1 ms 256 KB
subtask1-19.txt WA 1 ms 256 KB
subtask1-20.txt AC 1 ms 256 KB
subtask2-01.txt AC 5 ms 1664 KB
subtask2-02.txt AC 3 ms 1792 KB
subtask2-03.txt WA 1 ms 384 KB
subtask2-04.txt AC 9 ms 2048 KB
subtask2-05.txt WA 39 ms 4980 KB
subtask2-06.txt AC 43 ms 4980 KB
subtask2-07.txt AC 7 ms 4980 KB
subtask2-08.txt AC 34 ms 4980 KB
subtask2-09.txt WA 32 ms 4980 KB
subtask2-10.txt WA 7 ms 4980 KB
subtask2-11.txt WA 16 ms 4980 KB
subtask2-12.txt WA 15 ms 4980 KB
subtask2-13.txt AC 18 ms 4980 KB
subtask2-14.txt WA 8 ms 4980 KB
subtask2-15.txt WA 9 ms 4980 KB
subtask2-16.txt AC 7 ms 4980 KB
subtask2-17.txt WA 11 ms 4980 KB
subtask2-18.txt WA 13 ms 4980 KB
subtask2-19.txt WA 17 ms 4980 KB
subtask2-20.txt AC 38 ms 4980 KB