Submission #61433

# Submission time Handle Problem Language Result Execution time Memory
61433 2018-07-26T01:09:47 Z Benq Dango Maker (JOI18_dango_maker) C++11
13 / 100
4 ms 1004 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>

using namespace std;
using namespace __gnu_pbds;
 
typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;

typedef pair<int, int> pi;
typedef pair<ll,ll> pl;
typedef pair<ld,ld> pd;

typedef vector<int> vi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<cd> vcd;

template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>;

#define FOR(i, a, b) for (int i=a; i<(b); i++)
#define F0R(i, a) for (int i=0; i<(a); i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)

#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()

const int MOD = 1000000007;
const ll INF = 1e18;
const int MX = 3000;

int N,M,ok[MX][MX][2];
string s[MX];
queue<pi> tri;

void BAD(int i, int j) {
    if (ok[i][j][0]+ok[i][j][1] == 1) tri.push({i,j});
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> N >> M;
    F0R(i,N) cin >> s[i];
    F0R(i,N) F0R(j,M) if (s[i][j] == 'G') {
        if (i-1 >= 0 && i+1 < N && s[i-1][j] == 'R' && s[i+1][j] == 'W') ok[i][j][0] = 1;
        if (j-1 >= 0 && j+1 < M && s[i][j-1] == 'R' && s[i][j+1] == 'W') ok[i][j][1] = 1;
        BAD(i,j);
    }
    int ans = 0;
    while (sz(tri)) {
        pi x = tri.front(); tri.pop();
        if (ok[x.f][x.s][0]+ok[x.f][x.s][1] != 1) {
            // cout << "OOPS " << x.f << " " << x.s << "\n";
            continue;
        }
        // cout << x.f << " " << x.s << "\n";
        // if (x.f == 0 && x.s == 1) cout << ok[x.f][x.s][0] << ""
        ans ++;
        if (ok[x.f][x.s][0]) {
            if (ok[x.f-1][x.s+1][1]) {
                ok[x.f-1][x.s+1][1] = 0;
                BAD(x.f-1,x.s+1);
            }
            if (ok[x.f+1][x.s-1][1]) {
                // cout << "ZZ\n";
                ok[x.f+1][x.s-1][1] = 0;
                BAD(x.f+1,x.s-1);
            }
        } else {
            if (ok[x.f+1][x.s-1][0]) {
                ok[x.f+1][x.s-1][0] = 0;
                BAD(x.f+1,x.s-1);
            }
            if (ok[x.f-1][x.s+1][0]) {
                ok[x.f-1][x.s+1][0] = 0;
                BAD(x.f-1,x.s+1);
            }
        }
    }
    F0R(i,N) F0R(j,M) if (ok[i][j][0]+ok[i][j][1] == 2) ans ++;
    cout << ans;
}

/* Look for:
* the exact constraints (multiple sets are too slow for n=10^6 :( ) 
* special cases (n=1?)
* overflow (ll vs int?)
* array bounds
*/
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 3 ms 488 KB Output is correct
3 Correct 3 ms 568 KB Output is correct
4 Correct 3 ms 648 KB Output is correct
5 Correct 3 ms 648 KB Output is correct
6 Correct 2 ms 688 KB Output is correct
7 Correct 3 ms 688 KB Output is correct
8 Correct 2 ms 688 KB Output is correct
9 Correct 3 ms 688 KB Output is correct
10 Correct 3 ms 688 KB Output is correct
11 Correct 2 ms 688 KB Output is correct
12 Correct 3 ms 764 KB Output is correct
13 Correct 2 ms 764 KB Output is correct
14 Correct 3 ms 764 KB Output is correct
15 Correct 4 ms 764 KB Output is correct
16 Correct 2 ms 764 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 3 ms 488 KB Output is correct
3 Correct 3 ms 568 KB Output is correct
4 Correct 3 ms 648 KB Output is correct
5 Correct 3 ms 648 KB Output is correct
6 Correct 2 ms 688 KB Output is correct
7 Correct 3 ms 688 KB Output is correct
8 Correct 2 ms 688 KB Output is correct
9 Correct 3 ms 688 KB Output is correct
10 Correct 3 ms 688 KB Output is correct
11 Correct 2 ms 688 KB Output is correct
12 Correct 3 ms 764 KB Output is correct
13 Correct 2 ms 764 KB Output is correct
14 Correct 3 ms 764 KB Output is correct
15 Correct 4 ms 764 KB Output is correct
16 Correct 2 ms 764 KB Output is correct
17 Correct 2 ms 764 KB Output is correct
18 Correct 3 ms 764 KB Output is correct
19 Correct 3 ms 816 KB Output is correct
20 Correct 2 ms 816 KB Output is correct
21 Correct 3 ms 828 KB Output is correct
22 Correct 3 ms 960 KB Output is correct
23 Correct 3 ms 960 KB Output is correct
24 Correct 4 ms 960 KB Output is correct
25 Correct 3 ms 960 KB Output is correct
26 Correct 3 ms 960 KB Output is correct
27 Correct 3 ms 960 KB Output is correct
28 Correct 3 ms 960 KB Output is correct
29 Correct 3 ms 1004 KB Output is correct
30 Correct 3 ms 1004 KB Output is correct
31 Correct 3 ms 1004 KB Output is correct
32 Correct 3 ms 1004 KB Output is correct
33 Correct 3 ms 1004 KB Output is correct
34 Correct 2 ms 1004 KB Output is correct
35 Correct 2 ms 1004 KB Output is correct
36 Correct 3 ms 1004 KB Output is correct
37 Correct 3 ms 1004 KB Output is correct
38 Correct 3 ms 1004 KB Output is correct
39 Correct 3 ms 1004 KB Output is correct
40 Correct 3 ms 1004 KB Output is correct
41 Correct 3 ms 1004 KB Output is correct
42 Correct 3 ms 1004 KB Output is correct
43 Incorrect 4 ms 1004 KB Output isn't correct
44 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 3 ms 488 KB Output is correct
3 Correct 3 ms 568 KB Output is correct
4 Correct 3 ms 648 KB Output is correct
5 Correct 3 ms 648 KB Output is correct
6 Correct 2 ms 688 KB Output is correct
7 Correct 3 ms 688 KB Output is correct
8 Correct 2 ms 688 KB Output is correct
9 Correct 3 ms 688 KB Output is correct
10 Correct 3 ms 688 KB Output is correct
11 Correct 2 ms 688 KB Output is correct
12 Correct 3 ms 764 KB Output is correct
13 Correct 2 ms 764 KB Output is correct
14 Correct 3 ms 764 KB Output is correct
15 Correct 4 ms 764 KB Output is correct
16 Correct 2 ms 764 KB Output is correct
17 Correct 2 ms 764 KB Output is correct
18 Correct 3 ms 764 KB Output is correct
19 Correct 3 ms 816 KB Output is correct
20 Correct 2 ms 816 KB Output is correct
21 Correct 3 ms 828 KB Output is correct
22 Correct 3 ms 960 KB Output is correct
23 Correct 3 ms 960 KB Output is correct
24 Correct 4 ms 960 KB Output is correct
25 Correct 3 ms 960 KB Output is correct
26 Correct 3 ms 960 KB Output is correct
27 Correct 3 ms 960 KB Output is correct
28 Correct 3 ms 960 KB Output is correct
29 Correct 3 ms 1004 KB Output is correct
30 Correct 3 ms 1004 KB Output is correct
31 Correct 3 ms 1004 KB Output is correct
32 Correct 3 ms 1004 KB Output is correct
33 Correct 3 ms 1004 KB Output is correct
34 Correct 2 ms 1004 KB Output is correct
35 Correct 2 ms 1004 KB Output is correct
36 Correct 3 ms 1004 KB Output is correct
37 Correct 3 ms 1004 KB Output is correct
38 Correct 3 ms 1004 KB Output is correct
39 Correct 3 ms 1004 KB Output is correct
40 Correct 3 ms 1004 KB Output is correct
41 Correct 3 ms 1004 KB Output is correct
42 Correct 3 ms 1004 KB Output is correct
43 Incorrect 4 ms 1004 KB Output isn't correct
44 Halted 0 ms 0 KB -