Submission #1289630

#TimeUsernameProblemLanguageResultExecution timeMemory
1289630hasandasDango Maker (JOI18_dango_maker)C++20
13 / 100
2093 ms580 KiB
#include <bits/stdc++.h>

using namespace std;


int main() {
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);

    long long n, m;

    cin >> n >> m;

    vector<string> v(n);

    for (long long i = 0; i < n; i++) {
        cin >> v[i];
    }

    vector<vector<long long>> notans;

    for (long long i = 0; i < n; ++i) {
        for (long long j = 0; j < m-2; ++j) {
            if (v[i][j] == 'R' && v[i][j+1] == 'G' && v[i][j+2] == 'W') {
                vector<long long> p(3);
                
                p[0] = i * m + j;
                p[1] = i * m + (j+1);
                p[2] = i * m + (j+2);

                notans.push_back(p);
            }
        }
    }
    for (long long i = 0; i < n-2; ++i) {
        for (long long j = 0; j < m; ++j) {
            if (v[i][j] == 'R' && v[i+1][j] == 'G' && v[i+2][j] == 'W') {
                vector<long long> p(3);
                
                p[0] = i * m + j;
                p[1] = (i+1) * m + j;
                p[2] = (i+2) * m + j;

                notans.push_back(p);
            }
        }
    }

    long long P = static_cast<long long>(notans.size());

    if (P == 0) {
        cout << 0 << "\n";
        return 0;
    }

    long long ans = 0;


     unsigned long long total = 1ULL << P;
        for (unsigned long long mc = 0; mc < total; ++mc) {
            vector<char> a(n*m, 0);

            bool b = true;
            long long nans = 0;

            for (long long mi = 0; mi < P; ++mi) {
                if (mc & (1ULL << mi)) {
                    auto &mp = notans[mi];
                    if (a[mp[0]] || a[mp[1]] || a[mp[2]]) {
                        b = false;
                        break;
                    }
                    a[mp[0]] = a[mp[1]] = a[mp[2]] = 1;
                    ++nans;
                }
            }
            if (b && nans > ans) {
                ans = nans;
            }
        }

    cout << ans << "\n";

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...