QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#931597#1874. Goldberg Machine 2hhoppitreeAC ✓1907ms83676kbC++149.4kb2025-03-11 14:50:042025-03-11 14:50:06

Judging History

This is the latest submission verdict.

  • [2025-03-11 14:50:06]
  • Judged
  • Verdict: AC
  • Time: 1907ms
  • Memory: 83676kb
  • [2025-03-11 14:50:04]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;

string add1(string S) {
    if (S == "") return "1";
    ++S.back();
    for (int i = (int)S.size() - 1; i >= 0; --i) {
        if (S[i] <= '9') break;
        if (i == 0) {
            S = "1" + S;
        } else {
            ++S[i - 1];
        }
        S[i] -= 10;
    }
    return S;
}

string mul2(string S) {
    for (auto &x : S) {
        x = (x - '0') * 2 + '0';
    }
    int ad = 0;
    for (int i = (int)S.size() - 1; i >= 0; --i) {
        if (S[i] > '9') {
            if (i == 0) ad = 1;
            else ++S[i - 1];
            S[i] -= 10;
        }
    }
    if (ad) S = "1" + S;
    return S;
}

const int N = 105, K = 20;
const int L = 32, I = 7;
const unsigned long long B = 1ll << L;

int n, m, q, c1[N][N], c2[N][N];

struct vec {
    long long val[20];
    int sz;

    vec() {
        sz = 0;
        memset(val, 0, sizeof(val));
    }

    size_t size() {
        return sz;
    }

    void resize(int x) {
        sz = x;
    }

    bool empty() {
        return sz == 0;
    }

    long long& operator [](int x) {
        return val[x];
    }

    void push_back(long long x) {
        val[sz++] = x;
    }

    long long& back() {
        return val[sz - 1];
    }

    void pop_back() {
        --sz;
    }
};

struct uInt {
    vec a;

    friend uInt operator + (uInt x, uInt y) {
        uInt res = x;
        if (res.a.size() < y.a.size()) res.a.resize(y.a.size());
        for (int i = 0; i < (int)res.a.size(); ++i) {
            res.a[i] += (i < (int)y.a.size() ? y.a[i] : 0);
            if (res.a[i] >= B) {
                res.a[i] -= B;
                if (i + 1 == (int)res.a.size()) res.a.push_back(0);
                ++res.a[i + 1];
            }
        }
        return res;
    }

    friend uInt operator - (uInt x, uInt y) {
        uInt res = x;
        for (int i = 0; i < (int)res.a.size(); ++i) {
            res.a[i] -= (i < (int)y.a.size() ? y.a[i] : 0);
            if (res.a[i] < 0) {
                res.a[i] += B, --res.a[i + 1];
            }
        }
        while (!res.a.empty() && res.a.back() == 0) res.a.pop_back();
        return res;
    }

    friend bool operator < (uInt x, uInt y) {
        if (x.a.size() != y.a.size()) return x.a.size() < y.a.size();
        for (int i = (int)x.a.size() - 1; ~i; --i) {
            if (x.a[i] != y.a[i]) return x.a[i] < y.a[i];
        }
        return 0;
    }
};

struct Int {
    int sgn;
    uInt a;

    friend Int operator + (Int x, Int y) {
        Int res;
        if (x.sgn == y.sgn) {
            res.sgn = x.sgn;
            res.a = x.a + y.a;
        } else {
            if (x.a < y.a) swap(x, y);
            res.sgn = x.sgn;
            res.a = x.a - y.a;
            if (res.a.a.empty()) res.sgn = 1;
        }
        return res;
    }

    friend Int operator - (Int x, Int y) {
        if (!y.a.a.empty()) y.sgn ^= 1;
        return x + y;
    }

    friend bool operator < (Int x, Int y) {
        if (x.sgn != y.sgn) return x.sgn < y.sgn;
        if (x.sgn == 1) return x.a < y.a;
        return y.a < x.a;
    }

    int zero() {
        int cnt = 0;
        for (int i = 0; i < (int)a.a.size(); ++i) {
            for (int j = 0; j < L; ++j) {
                if (!((a.a[i] >> j) & 1)) ++cnt;
                else break;
            }
            if (cnt != (i + 1) * L) break;
        }
        return cnt;
    }

    void print() {
        if (a.a.empty()) {
            puts("0");
            return;
        }
        assert(sgn == 1);
        string S = "";
        for (int i = (int)a.a.size() - 1; ~i; --i) {
            for (int j = 31; ~j; --j) {
                S = mul2(S);
                if ((a.a[i] >> j) & 1) S = add1(S);
            }
        }
        puts(S.c_str());
    }
};

Int f[N][N], g[N][N];
mt19937_64 rnd;

Int Rand() {
    Int res;
    res.sgn = 1;
    for (int i = 0; i < I; ++i) res.a.a.push_back(0);
    for (int i = 0; i < I; ++i) res.a.a.push_back(rnd() % B);
    return res;
}

Int pw2(int p) {
    Int res;
    res.sgn = 1;
    while (1) {
        if (p >= L) res.a.a.push_back(0), p -= L;
        else {
            res.a.a.push_back(1ll << p), p = 0;
            break;
        }
    }
    return res;
}

Int d2(Int x) {
    Int res;
    res.sgn = x.sgn, res.a = x.a;
    for (int i = (int)res.a.a.size() - 1; ~i; --i) {
        if (res.a.a[i] & 1) res.a.a[i - 1] += B;
        res.a.a[i] >>= 1;
    }
    while (!res.a.a.empty() && res.a.a.back() == 0) res.a.a.pop_back();
    return res;
}

int p;

int getP() {
    int res = 0;
    for (int i = 0; i < K; ++i) {
        for (int j = n + 1; j >= 1; --j) {
            for (int k = m + 1; k >= 1; --k) {
                if (j > n || k > m || c1[j][k] == 0) {
                    f[j][k] = Rand();
                } else {
                    f[j][k] = d2(f[j][k + 1] + f[j + 1][k]);
                }
            }
        }
        res = max(res, L * I - f[1][1].zero());
    }
    return res;
}

int tc;
Int mf[K][N][N], mg[K][N][N];

void genP(int p) {
    for (int i = 0; tc != K; ++i) {
        for (int j = n + 1; j >= 1; --j) {
            for (int k = m + 1; k >= 1; --k) {
                if (j > n || k > m || c1[j][k] == 0) {
                    f[j][k] = Rand();
                } else {
                    f[j][k] = d2(f[j][k + 1] + f[j + 1][k]);
                    g[j][k] = d2(f[j][k + 1] - f[j + 1][k]);
                }
            }
        }
        if (L * I - f[1][1].zero() == p) {
            for (int j = 1; j <= n; ++j) {
                for (int k = 1; k <= m; ++k) {
                    mf[tc][j][k] = f[j][k], mg[tc][j][k] = g[j][k];
                }
            }
            ++tc;
        }
    }
}

Int pwP, dlt[K], id[K], inv[K], eq[K];

Int trans(Int x) {
    int len = p;
    Int res;
    res.sgn = x.sgn, res.a.a.resize((len + L - 1) / L);
    for (int ri = L * I - 1, li; ri > L * I - 1 - len; ri = li - 1) {
        int rj = ri - (L * I - 1 - len) - 1;
        li = ri - min(ri & 31, rj & 31);
        int lj = li - (L * I - 1 - len) - 1;
        res.a.a[rj >> 5] |= ((x.a.a[ri >> 5] >> (li & 31)) & ((1ll << (ri - li + 1)) - 1)) << (lj & 31);
    }
    if (res.sgn == 0) res = res + pwP;
    return res;
}

Int mod(Int x, int y) {
    assert(x.sgn == 1);
    x.a.a.resize((y + L - 1) / L);
    if (y % L != 0) {
        x.a.a.back() &= ((1ll << (y % L)) - 1);
    }
    return x;
}

Int prod(Int x, Int y, int p) {
    assert(x.sgn == 1 && y.sgn == 1);
    if (x.a.a.size() == 0) return x;
    if (y.a.a.size() == 0) return y;
    Int res;
    res.sgn = 1;
    vector<__int128> tmp(x.a.a.size() + y.a.a.size() - 1);
    for (int i = 0; i < (int)x.a.a.size(); ++i) {
        for (int j = 0; j < (int)y.a.a.size() && (i + j) * L < p; ++j) {
            tmp[i + j] += (__int128)x.a.a[i] * y.a.a[j];
        }
    }
    for (int i = 0; i < (int)tmp.size(); ++i) {
        if (tmp[i] >= B) {
            if (i + 1 == (int)tmp.size()) tmp.push_back(0);
            tmp[i + 1] += tmp[i] >> L, tmp[i] &= (B - 1);
        }
    }
    for (int i = 0; i < (int)tmp.size(); ++i) {
        res.a.a.push_back(tmp[i]);
    }
    return mod(res, p);
}

Int Inv(Int x, int y) {
    if (y <= 2) return x;
    Int res = x;
    for (int i = 1; i <= y - 3; ++i) {
        x = prod(x, x, y), res = prod(res, x, y);
    }
    return res;
}

Int solve(int id) {
    if (dlt[id].a.a.empty()) return dlt[id];
    int len = L * I - dlt[id].zero();
    if (len > p) return Rand();
    Int mul = trans(dlt[id]), ans = prod(mul, inv[id], p);
    return ans;
}

signed main() {
    scanf("%d%d%d", &n, &m, &q);
    for (int i = 1; i <= n; ++i) {
        string S; cin >> S, S = ' ' + S;
        for (int j = 1; j <= m; ++j) {
            c1[i][j] = (S[j] == '.' ? 0 : (S[j] == 'v' ? 1 : 2));
        }
    }
    for (int i = 1; i <= n; ++i) {
        string S; cin >> S, S = ' ' + S;
        for (int j = 1; j <= m; ++j) {
            c2[i][j] = (S[j] == '.' ? 0 : (S[j] == 'v' ? 1 : 2));
        }
    }
    p = getP(), pwP = pw2(p), genP(p);
    for (int i = 0; i < K; ++i) {
        id[i] = mf[i][1][1], inv[i] = Inv(trans(id[i]), p);
        for (int j = 1; j <= n; ++j) {
            for (int k = 1; k <= m; ++k) {
                if (c2[j][k] == 1) dlt[i] = dlt[i] + mg[i][j][k];
                if (c1[j][k] == 1) dlt[i] = dlt[i] - mg[i][j][k];
            }
        }
        eq[i] = solve(i);
    }
    for (int t = 1; t <= q + 1; ++t) {
        if (t != 1) {
            int opt, x, y; scanf("%d%d%d", &opt, &x, &y);
            for (int i = 0; i < K; ++i) {
                if ((opt == 1) ^ ((opt == 1 ? c1 : c2)[x][y] == 1)) dlt[i] = dlt[i] - mg[i][x][y];
                else dlt[i] = dlt[i] + mg[i][x][y];
            }
            for (int i = 0; i < K; ++i) {
                eq[i] = solve(i);
                if (eq[0] < eq[i] || eq[i] < eq[0]) break;
            }
            (opt == 1 ? c1 : c2)[x][y] ^= 3;
        }
        int flg = 1;
        for (int i = 1; i < K; ++i) {
            if (eq[0] < eq[i] || eq[i] < eq[0]) {
                flg = 0;
                break;
            }
        }
        if (!flg) puts("-1");
        else {
            Int ans = eq[0];
            if (pwP - ans < ans) ans = pwP - ans;
            ans.print();
        }
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 8ms
memory: 83520kb

input:

3 3 9
>v>
vv>
v.>

v>>
v>>
v.>

2 3 1
2 2 1
2 1 1
1 3 3
1 2 2
2 3 3
2 3 1
1 1 2
1 2 1

output:

1
-1
-1
2
14
-1
-1
-1
-1
0

result:

ok 10 tokens

Test #2:

score: 0
Accepted
time: 538ms
memory: 83480kb

input:

1 1 100000
v

v

1 1 1
2 1 1
2 1 1
1 1 1
2 1 1
2 1 1
1 1 1
1 1 1
2 1 1
2 1 1
2 1 1
1 1 1
1 1 1
1 1 1
2 1 1
1 1 1
2 1 1
2 1 1
1 1 1
1 1 1
1 1 1
1 1 1
2 1 1
1 1 1
1 1 1
2 1 1
2 1 1
2 1 1
2 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
2 1 1
2 1 1
1 1 1
1 1 1
2 1 1
1 1 1
2 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
2...

output:

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
...

result:

ok 100001 tokens

Test #3:

score: 0
Accepted
time: 430ms
memory: 83460kb

input:

2 2 100000
>v
v>

>>
>v

2 1 1
1 1 1
2 1 1
1 1 1
2 2 2
1 2 2
2 1 2
2 1 1
2 1 2
1 1 2
1 2 2
2 2 2
1 2 2
2 2 2
1 1 2
2 1 2
2 1 1
2 2 2
2 2 1
1 1 1
2 1 1
2 2 2
2 2 1
2 1 2
2 1 1
2 2 2
2 2 1
1 1 1
1 2 1
2 2 2
1 2 2
1 1 1
1 1 2
1 2 2
1 2 2
2 2 2
2 1 2
1 1 2
1 2 2
2 2 2
2 1 2
1 2 2
1 2 1
1 2 1
2 2 1
2 1 2...

output:

2
-1
2
-1
2
-1
2
-1
1
-1
1
-1
1
-1
1
-1
1
-1
-1
0
-1
0
-1
-1
2
-1
-1
1
-1
2
-1
2
-1
-1
1
-1
1
-1
1
-1
1
-1
-1
1
-1
1
-1
0
-1
0
-1
-1
1
-1
1
-1
-1
2
-1
2
-1
1
-1
1
-1
1
-1
0
-1
-1
1
-1
-1
0
-1
0
-1
0
-1
-1
2
-1
1
-1
2
-1
-1
2
-1
2
-1
2
-1
2
-1
-1
1
-1
1
-1
-1
2
-1
2
-1
2
-1
2
-1
-1
2
-1
2
-1
2
-1
-1
...

result:

ok 100001 tokens

Test #4:

score: 0
Accepted
time: 12ms
memory: 83560kb

input:

2 2 1000
vv
>v

v>
vv

1 1 1
1 2 2
1 1 2
2 1 2
1 2 1
1 1 2
2 1 2
2 2 1
1 1 2
2 1 2
1 1 1
1 1 2
2 1 2
1 2 1
1 1 2
2 1 2
2 2 1
1 1 2
2 1 2
2 1 1
1 1 2
2 1 2
1 2 1
1 1 2
2 1 2
2 2 1
1 1 2
2 1 2
1 2 2
1 1 2
2 1 2
1 2 1
1 1 2
2 1 2
2 2 1
1 1 2
2 1 2
1 1 1
1 1 2
2 1 2
1 2 1
1 1 2
2 1 2
2 2 1
1 1 2
2 1 2
2...

output:

2
-1
-1
-1
-1
-1
-1
1
-1
1
-1
-1
-1
2
-1
-1
-1
2
-1
-1
-1
1
-1
1
-1
-1
-1
-1
-1
-1
1
-1
1
-1
-1
-1
-1
-1
2
-1
-1
-1
0
-1
-1
-1
2
-1
-1
-1
-1
-1
1
-1
1
-1
-1
-1
-1
-1
-1
1
-1
1
-1
-1
-1
2
-1
-1
-1
2
-1
-1
-1
1
-1
1
-1
-1
-1
-1
-1
-1
-1
1
-1
-1
-1
2
-1
1
-1
-1
-1
-1
-1
-1
-1
1
-1
2
-1
-1
-1
1
-1
-1
-1...

result:

ok 1001 tokens

Test #5:

score: 0
Accepted
time: 16ms
memory: 83640kb

input:

2 3 1000
vv>
v>v

>>v
v>v

1 2 1
1 2 2
1 2 3
1 1 2
2 1 2
1 2 2
1 1 2
2 1 2
2 2 2
1 1 2
2 1 2
1 1 1
1 1 2
2 1 2
1 2 2
1 1 2
2 1 2
2 2 2
1 1 2
2 1 2
2 1 1
1 1 2
2 1 2
1 2 2
1 1 2
2 1 2
2 2 2
1 1 2
2 1 2
1 2 1
1 1 2
2 1 2
1 2 2
1 1 2
2 1 2
2 2 2
1 1 2
2 1 2
1 1 1
1 1 2
2 1 2
1 2 2
1 1 2
2 1 2
2 2 2
1 1...

output:

7
-1
-1
-1
5
-1
-1
-1
-1
-1
3
-1
2
-1
-1
2
-1
-1
6
-1
-1
-1
-1
-1
-1
3
-1
-1
-1
-1
-1
-1
3
-1
-1
7
-1
-1
5
-1
-1
-1
-1
4
-1
-1
-1
-1
3
-1
-1
1
-1
-1
5
-1
-1
-1
-1
-1
-1
5
-1
-1
-1
-1
-1
-1
2
-1
-1
6
-1
-1
6
-1
5
-1
-1
-1
-1
-1
3
-1
-1
5
-1
-1
-1
-1
-1
3
-1
2
-1
-1
2
-1
-1
6
-1
-1
-1
-1
-1
-1
3
-1
-1...

result:

ok 1001 tokens

Test #6:

score: 0
Accepted
time: 827ms
memory: 83632kb

input:

1 10 100000
v>>>>>>v>>

>v>vvvvvvv

1 1 3
1 1 8
1 1 1
2 1 1
1 1 7
1 1 1
2 1 1
2 1 7
1 1 1
2 1 1
1 1 2
1 1 1
2 1 1
1 1 7
1 1 1
2 1 1
2 1 7
1 1 1
2 1 1
2 1 2
1 1 1
2 1 1
1 1 7
1 1 1
2 1 1
2 1 7
1 1 1
2 1 1
1 1 5
1 1 1
2 1 1
1 1 7
1 1 1
2 1 1
2 1 7
1 1 1
2 1 1
1 1 2
1 1 1
2 1 1
1 1 7
1 1 1
2 1 1
2 1 7
...

output:

135
139
11
10
9
73
74
75
139
138
137
139
140
141
77
76
75
11
12
13
15
14
13
77
78
79
143
142
141
157
158
159
95
94
93
29
30
31
29
28
27
91
92
93
157
156
155
153
154
155
91
90
89
25
26
27
43
42
41
105
106
107
171
170
169
171
172
173
109
108
107
43
44
45
47
46
45
109
110
111
175
174
173
429
430
431
36...

result:

ok 100001 tokens

Test #7:

score: 0
Accepted
time: 835ms
memory: 83628kb

input:

9 1 100000
>
>
v
>
v
>
v
>
v

>
v
>
v
v
>
>
>
v

1 1 1
1 5 1
1 6 1
1 8 1
1 9 1
1 2 1
2 2 1
1 3 1
1 2 1
2 2 1
2 3 1
1 2 1
2 2 1
1 4 1
1 2 1
2 2 1
1 3 1
1 2 1
2 2 1
2 3 1
1 2 1
2 2 1
2 4 1
1 2 1
2 2 1
1 3 1
1 2 1
2 2 1
2 3 1
1 2 1
2 2 1
1 9 1
1 2 1
2 2 1
1 3 1
1 2 1
2 2 1
2 3 1
1 2 1
2 2 1
1 4 1
1 2 1...

output:

58
59
43
75
203
53
51
49
53
55
57
61
59
57
49
51
53
49
47
45
41
43
45
37
35
33
37
39
41
45
43
41
215
213
211
215
217
219
223
221
219
211
213
215
211
209
207
203
205
207
199
197
195
199
201
203
207
205
203
53
51
49
53
55
57
61
59
57
49
51
53
49
47
45
41
43
45
37
35
33
37
39
41
45
43
41
25
27
29
25
23...

result:

ok 100001 tokens

Test #8:

score: 0
Accepted
time: 270ms
memory: 83636kb

input:

3 3 100000
>>>
vvv
>>v

>>>
vv>
>vv

1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 3 1
1 3 3
1 3 1
2 3 1
1 2 2
1 3 1
2 3 1
2 2 2
1 3 1
2 3 1
1 2 1
1 3 1
2 3 1
1 2 2
1 3 1
2 3 1
2 2 2
1 3 1
2 3 1
2 2 1
1 3 1
2 3 1
1 2 2
1 3 1
2 3 1
2 2 2
1 3 1
2 3 1
1 1 2
1 3 1
2 3 1
1 2 2
1 3 1
2 3 1
2 2 2
1 3 1
2 3 1
1 2 1
1 3 1...

output:

8
-1
-1
7
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
5
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
5
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-...

result:

ok 100001 tokens

Test #9:

score: 0
Accepted
time: 238ms
memory: 83480kb

input:

4 4 100000
v>v>
>>v>
vv>>
>>.>

vv>v
vv>>
v>>>
vv.>

1 1 1
1 2 4
1 3 1
1 3 3
1 3 4
1 4 4
1 4 2
2 4 2
1 2 1
1 4 2
2 4 2
2 2 1
1 4 2
2 4 2
1 2 2
1 4 2
2 4 2
1 2 1
1 4 2
2 4 2
2 2 1
1 4 2
2 4 2
2 2 2
1 4 2
2 4 2
1 2 1
1 4 2
2 4 2
2 2 1
1 4 2
2 4 2
1 1 2
1 4 2
2 4 2
1 2 1
1 4 2
2 4 2
2 2 1
1 4 2
2 4 2
1...

output:

26
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 100001 tokens

Test #10:

score: 0
Accepted
time: 1901ms
memory: 83504kb

input:

1 100 100000
v>vv>>vvv>>>>v>>>vvv>>>>v>>>vv>>vv>v>v>vv>vv>vvv>>>>vv>v>vvv>v>vv>>>vv>>>v>>v>>v>>vv>v>>>vvvv>>v>vv>

vvvv>>v>v>v>>v>vv>v>vv>v>>>>>v>v>>v>>>>>>>>v>vv>v>vv>>>vvv>vv>>>>v>vvvvvvv>v>v>v>>>>>>vv>v>>>>v>>>>v

1 1 8
2 1 62
2 1 53
2 1 91
2 1 25
2 1 65
2 1 71
1 1 54
2 1 59
2 1 98
1 1 56
1 1 89
...

output:

130162746902623059640821711746
130162746902623059640821711874
130162746904928902650035405826
130162746904933406249662776322
131400686944218786524561900546
131400686944218786524578677762
131400686962665530598288229378
131400685782073909880876925954
131400685782082917080131666946
131400685782371147456...

result:

ok 100001 tokens

Test #11:

score: 0
Accepted
time: 1907ms
memory: 83632kb

input:

100 1 100000
>
v
>
v
v
>
v
>
>
v
v
>
v
v
>
>
>
v
>
>
v
>
>
>
v
v
v
>
>
>
v
v
>
v
>
>
>
v
v
v
v
>
>
>
v
v
>
>
>
v
v
v
v
v
v
v
>
>
>
v
>
>
>
>
>
v
>
>
v
>
v
>
>
>
v
>
v
v
v
v
v
v
>
>
>
>
>
v
>
>
v
v
v
v
>
v
>
v
>
v

v
>
v
v
v
>
>
>
>
>
v
v
>
v
v
>
>
v
v
>
>
v
v
v
>
>
v
>
v
>
v
v
v
>
>
v
v
>
>
v
v
>
v
...

output:

373624807217797461802635479613
373624806922649556623282653757
374243776942292246760732215869
576494173228879804361795188163
576532858855107472495385785795
576532858855107507679757874627
576532858855107507679757874755
576532858855107507679757940291
576532858855107507679755843139
576532858855107507679...

result:

ok 100001 tokens

Test #12:

score: 0
Accepted
time: 696ms
memory: 83460kb

input:

100 100 100000
vvvvv>vv>vv>>>v>>vv>vv>v>>v>>>v>v>v>>vvvvvv>v>>v>>>>>vv>>>v>v>>vvv>>vvvvvvvvvv>v>v>v>>v>vvv>>>vv>>vv
>>>v>vvv>>>vvvvvv>v>>>vv>>vvvv>>>>>>vv>>vv>>>>>v>>vv>>>vvv>>vvvv>>>v>>vv>v>v>>v>v>>vv>>v>>v>>>vv>v>v
vvv>>>v>v>>vv>vv>>>v>>>vv>vvvv>v>>>v>v>v>>>>vvv>>vvv>vvvvv>>>v>>>v>v>>vvvv>>vvvv>>v...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 100001 tokens

Test #13:

score: 0
Accepted
time: 620ms
memory: 83616kb

input:

100 100 100000
>>v>v>vvv>v>vv>>v>>v>>v>vvv>vv>v>>>>>>>vv>vv>>>>vvvv>>>v>>v>v>>>....................................
v>>>>v>.>vvvv>v>>>>vvvv>>vvv>>v>.vv>>>>.>>vvvvvv>v>v>v>vv>v>vv>v>...................................
>>vv>>v>vvvv>>>>>vv>>vvv>v>v.>>>vv>vvvv>>>.vvv>v.>>>vvvvv>vvvv>>v>>vvv>vvvv>v>vv>vv...

output:

253528151914256935978069277722645579058348007113389173875510
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1...

result:

ok 100001 tokens

Test #14:

score: 0
Accepted
time: 706ms
memory: 83508kb

input:

100 100 100000
vvv>>v>>vvv>v>>vv>>>vv>>>>v>>vv>>>>vvvv>v>v>>v>vvvvv>vv>vvv>>v>vv>vvv>>>>>vvvv>vvvvv>v>v>>v>v>>>>>v>
>vv>v>vvv>v>>>vv>>v>>v>v>>vvvvvvvv>>>vv>>vv>vv>v>v>>>v>v>v>vv>>>>>v>>v>v>>v>v>v>>>>>v>>vv>>>v>vv>>>v
v>v>v>v>>>v>>v>>>>>>>v>vv>vv>>>>v>>v>>vvv>v>v>>>vv>vvv>vv>vv>v>vvvv>vv>>>>vv>>>vvvv...

output:

23386290453762822566412058133305892764924256716359048750097
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 100001 tokens

Test #15:

score: 0
Accepted
time: 667ms
memory: 83632kb

input:

100 100 100000
vv>v>...............................................................................................
>vvvvv>vvv>>v>vvv>vv>>v.............................................................................
>vvv>>vv>.v>vv.vvv>v>v>v>>>...........................................................

output:

42658660090357251640628465467726161658558031734734431452118
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 100001 tokens

Test #16:

score: 0
Accepted
time: 432ms
memory: 83628kb

input:

100 100 100000
>>>v................................................................................................
v.v.................................................................................................
v.>v..................................................................................

output:

43815677202469463796265627043100870828664328138117793224362
-1
43815677202469463796265627043100870828664328138117793224361
-1
43815677202469463796265627043100870828664328138117793224360
-1
-1
-1
43815677202469463796265627043100870828664328138117793224359
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 100001 tokens

Test #17:

score: 0
Accepted
time: 466ms
memory: 83632kb

input:

100 100 100000
vvvv................................................................................................
v...................................................................................................
v.....................................................................................

output:

222453068264192526417000218257812802177233353809948814995323
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1...

result:

ok 100001 tokens

Test #18:

score: 0
Accepted
time: 587ms
memory: 83628kb

input:

100 100 100000
>v>>v...............................................................................................
>vvv>>..............................................................................................
>>vv.v>>>.............................................................................

output:

201750991551104042432020447813933605717073792565088416920
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1...

result:

ok 100001 tokens

Test #19:

score: 0
Accepted
time: 1523ms
memory: 83628kb

input:

100 100 100000
v>v>>vvv............................................................................................
>v.>.>>v>vvv>>>.....................................................................................
......>vv.>v>>v.......................................................................

output:

39016689483511987693168985971494459264198641421031014240019
-1
39016689483511987693168985971494459264198641421031014240019
-1
39016689483511987693168985971494459264198641421031014240019
-1
39016689483511987693168985971494459264198641421031014240019
-1
390166894835119876931689859714944592641986414210...

result:

ok 100001 tokens

Test #20:

score: 0
Accepted
time: 773ms
memory: 83636kb

input:

100 100 100000
>...................................................................................................
>v>>>v>.............................................................................................
v>vvvv>>..............................................................................

output:

124624611308017348521697627034445754534951315753056709418940
124624611308017348521697627034445754534951315753056709418939
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
124624611308017348521697627034445754534951315753056709418938
124624611308017348521697627034445754534951315753056709418939
-1
-1
-1
-1...

result:

ok 100001 tokens

Test #21:

score: 0
Accepted
time: 416ms
memory: 83628kb

input:

100 100 100000
vv>v>v>>v>>v>v>vvv>>>vv>vvvvvv>v>>>>v>>v............................................................
vvv>>>vv>vv>>>>>vvv>>vv>v>>>v>vv>>>>vvv>>vv>v>v>vvv>>vvv>v>v>>>v>v>v>v>>>>v>>vvv>>vvv>vv>>v>vv>vvvv>
>>>>>v>>>vvv>v>>vv>vv>>>>>vvvvv>vv>v>v>v>>>>>vvv>>vvvv.>>v>>vvv>>v>vvvvvvvvv>v>v>v>...

output:

107671931810604867317823529653294578411322501736483480318371
93195323721768917124921731889350746903952872486365624094301
107671931810604867317823529653294578411322501736483480318371
294062579254142701567666993431996072219228246709214728506973
107671931810604867317823529653294578411322501736483480318...

result:

ok 100001 tokens

Test #22:

score: 0
Accepted
time: 467ms
memory: 83532kb

input:

100 100 100000
>vvv>>vv>>>>>>vvv>v>>>>vv>vvvv>>>v>v>vv>>>vv>>v>>>>>>>>vvvvv>>vv>>v>>>v>vv>v>>v>vv>vvvvvv>>>>vvv>vvv
vvvv>vvv>v>>>>vv>vvv>>vv>>>v>>vvv>>>v>>v>>v>>>>v>>>>>vv>>vvv>vvvvv>v>>>>>vv>>>>v>>vvv>>>v>vvvv>v>vv>
v>>v>v>>>v>>>>>vvvvv>v>>vvv>>v>vv>v>vv>vv>v>>vvv>>>vvvvv>>>>>>vvv>v>>>vv>vvvv>>>vv>...

output:

17082601553275761539905298915831996601457557630861824921682
-1
17082601553275761539905298915831996601457557630861824921682
-1
17082601553275761539905298915831996601457557630861824921682
-1
17082601553275761539905298915831996601457557630861824921682
-1
170826015532757615399052989158319966014575576308...

result:

ok 100001 tokens

Test #23:

score: 0
Accepted
time: 632ms
memory: 83632kb

input:

100 100 100000
v>vv>>>vvvv>>>v>>vv>v>vvvvvvvv>vvvv>v>vv>v>>vv>v>v>>>vvv>vv>>>vvv>v>vvv>v>v>vv>>>vv>vvvvv>v>vv>vv>>v
>.>.>.>.>.v.v.>.v.v.>.v.v.v.>.v.>.v.>.v.v.>.v.>.>.v.>.>.>.>.>.>.>.>.>.v.v.v.>.v.v.>.v.v.v.v.>.v.v.v.
vvvv>vv>v>>vv>v>vvv>>>vvvv>>>v>v>v>vvvv>v>>v>vvv>>>v>>v>>>>v>>v>>>v>v>v>vvv>>>v>>v>...

output:

18784946845871147976358177942986863608005443350565495986568
-1
18784946845871147976358177942986863608005443350565495986567
-1
18784946845871147976358177942986863608005443350565495986567
-1
18784946845871147976358177942986863608005443350565495986567
-1
187849468458711479763581779429868636080054433505...

result:

ok 100001 tokens

Test #24:

score: 0
Accepted
time: 618ms
memory: 83376kb

input:

100 100 100000
>>>>>>>>>>>>>>>>>>>>>>>v>>>>>>>>>>>>>>>>>v>>>>>>>>v>v>>>>>>>>>>>v>>>>>>>>>>>>>>>>>>>>>>>>v>>>>>>>>>>
>>.>>.>>.>>.>>.>v.>>.>>.>>.>>.>>.>>.vv.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>>.>
>..>..>..>..>..>..>..>..>..>..>..>..>..>..>..>..>..>..>..v..>..>..v..>..>..>..>..>....

output:

53381669762158452489209327555144242907672197839891108814646
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 100001 tokens

Test #25:

score: 0
Accepted
time: 1261ms
memory: 83632kb

input:

100 100 100000
>>>>>>>v>>>>vv>>>>>v>>>v>>>>v>v>>v>>>>>>>>>>>>>v>>>v>v>>>>>v>>>v>>>>>>>>>>vvv>v>>>>>>v>v>>vv>>v>v>v>
>>.>v.>v.>v.>>.>>.>>.>v.>v.>>.>>.v>.v>.>>.v>.>v.v>.v>.>>.>v.>v.>v.>>.>>.>>.>>.>v.v>.>>.>v.>>.v>.v>.>
v..>..v..>..v..>..>..>..v..v..>..>..>..>..>..>..v..v..>..v..>..>..>..>..>..>..>..v....

output:

57275352746220220487283409946985056949752315135185187188423
-1
57275352746220220487283409946985056949752315135185187188423
-1
57275352746220220487283409946985056949752315135185187188423
-1
57275352746220220487283409946985056949752315135185187188423
-1
572753527462202204872834099469850569497523151351...

result:

ok 100001 tokens

Test #26:

score: 0
Accepted
time: 1497ms
memory: 83596kb

input:

100 100 100000
vv>vv>v>>>>>>>>>>>v>vv>v>>>>>v>vvv>>>>>>vv>>>>>vv>v>>v>>>>>v>>>v>>>vv>v>v>vvv>>>vv>>>>v>>v>>>v>>>vv>
>>.>>.vv.>>.>v.vv.v>.>>.v>.v>.v>.vv.>v.>>.vv.>v.vv.>>.vv.>>.vv.>>.>v.v>.>>.>v.v>.v>.>v.vv.>v.>v.v>.v
>..>..v..>..>..>..>..v..v..>..>..>..>..v..>..>..>..>..>..>..>..v..v..>..>..v..>..v....

output:

64907501743444547022137361805387261917105074916262651128947
-1
64907501743444547022137361805387261917105074916262651128947
-1
64907501743444547022137361805387261917105074916262651128947
-1
64907501743444547022137361805387261917105074916262651128947
-1
649075017434445470221373618053872619171050749162...

result:

ok 100001 tokens

Test #27:

score: 0
Accepted
time: 1530ms
memory: 83636kb

input:

100 100 100000
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv>vvvvv>vvvvvvvvvvvvvvvvv>vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.vv.>v.vv.vv.vv.vv.v
v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v..v....

output:

21976302509188623113582373479770928527855534478211028789917
-1
21976302509188623113582373479770928527855534478211028789917
-1
21976302509188623113582373479770928527855534478211028789917
-1
21976302509188623113582373479770928527855534478211028789917
-1
219763025091886231135823734797709285278555344782...

result:

ok 100001 tokens

Test #28:

score: 0
Accepted
time: 373ms
memory: 83676kb

input:

100 100 100000
>>..................................................................................................
>>..................................................................................................
>>v>>.................................................................................

output:

4899093492166070486573268177568463493559612269189682940140
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-...

result:

ok 100001 tokens

Test #29:

score: 0
Accepted
time: 1394ms
memory: 83504kb

input:

100 100 100000
vv>vvvv.............................................................................................
v>vvv.v.............................................................................................
vvv>>vvvv.............................................................................

output:

5852208803576017905737030078378565171209408740723222843758
-1
5852208803576017905737030078378565171209408740723222843758
-1
5852208803576017905737030078378565171209408740723222843758
-1
5852208803576017905737030078378565171209408740723222843758
-1
5852208803576017905737030078378565171209408740723222...

result:

ok 100001 tokens

Test #30:

score: 0
Accepted
time: 598ms
memory: 83632kb

input:

100 100 100000
>>>.................................................................................................
>>>>>v..............................................................................................
>>>>v>>>..............................................................................

output:

229725942343818046032259298037952089749446429318663445046838
-1
-1
229725942343818046032259298037952089749446429318663445046839
-1
-1
-1
-1
-1
-1
-1
-1
-1
229725942343818046032259298037952089749446429318663445046840
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 100001 tokens