Submission #813181

# Submission time Handle Problem Language Result Execution time Memory
813181 2023-08-07T14:07:16 Z Cookie Crossing (JOI21_crossing) C++14
3 / 100
7000 ms 4148 KB
#include<bits/stdc++.h>
#include<fstream>
using namespace std;
ifstream fin("VNOICUP.INP");
ofstream fout("VNOICUP.OUT");
#define sz(a) (int)a.size()
#define ll long long
#define pb push_back
#define forr(i, a, b) for(int i = a; i < b; i++)
#define dorr(i, a, b) for(int i = a; i >= b; i--)
#define ld long double
#define vt vector
#include<fstream>
#define fi first
#define se second
#define pll pair<ll, ll>
#define pii pair<int, int>
const ld PI = 3.14159265359;
using u128 = __uint128_t;
//const int x[4] = {1, -1, 0, 0};
//const int y[4] = {0, 0, 1, -1};
ll mod = 1e9 + 9;
const int mxn = 2e5 + 5, mxq = 2e5 + 5, sq = 400, mxv = 2e5 + 5;
//const int base = (1 << 18);
const int inf = 1e9, neg = -69420;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rr(ll l, ll r){
    return(uniform_int_distribution<ll>(l, r)(rng));
}
 
map<ll, int>mp;
int to[mxn + 1];
ll pw[mxn + 1], n, q;
string s[3], t;
string conv(string a, string b){
    string res = "";
    for(int i = 0; i < sz(a); i++){
        if(a[i] == b[i])res += a[i];
        else if(a[i] == 'J'){
            if(b[i] = 'O')res += 'I';
            else res += 'O';
        }else if(a[i] == 'O'){
            if(b[i] == 'J')res += 'I';
            else res += 'J';
        }else{
            if(b[i] == 'O')res += 'J';
            else res += 'O';
        }
    }
    return(res);
}
ll gethash(string s){
    ll ans = 0;
    for(int i = 0; i < sz(s); i++){
        ans += pw[i] * to[s[i]];
        ans %= mod;
    }
    return(ans);
}
void solve(int mask, string curr){
    mp[gethash(curr)] = 1;
    if(mask == (1 << 3) - 1){
        return;
    }
    for(int i = 0; i < 3; i++){
        if(!(mask & (1 << i))){
            solve(mask | (1 << i), conv(curr, s[i]));
        }
    }
}
signed main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n;
    mod = rr(1e8, 1e13);
    pw[0] = 1;
    for(int i = 1; i <= n; i++){
        pw[i] = (pw[i - 1] * 3) % mod;
    }
    to['J'] = 0; to['O'] = 1; to['I'] = 2;
    cin >> s[0] >> s[1] >> s[2];
    vt<int>v;
    for(int i = 0; i < 3; i++){
        solve((1 << i), s[i]);
    }
    
    
    cin >> q;
    cin >> t;
    ll ht = gethash(t);
    if(mp.find(ht) != mp.end())cout << "Yes";
    else cout << "No";
    cout << "\n";
    while(q--){
        int l, r; char c; cin >> l >> r >> c; l--; r--;
        for(int i = l; i <= r; i++)t[i] = c;
        ll ht = gethash(t);
        if(mp.find(ht) != mp.end())cout << "Yes";
        else cout << "No";
        cout << "\n";
    }
    
}

Compilation message

Main.cpp: In function 'std::string conv(std::string, std::string)':
Main.cpp:40:21: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   40 |             if(b[i] = 'O')res += 'I';
Main.cpp: In function 'long long int gethash(std::string)':
Main.cpp:55:31: warning: array subscript has type 'char' [-Wchar-subscripts]
   55 |         ans += pw[i] * to[s[i]];
      |                               ^
# Verdict Execution time Memory Grader output
1 Correct 101 ms 792 KB Output is correct
2 Correct 119 ms 876 KB Output is correct
3 Correct 129 ms 880 KB Output is correct
4 Correct 118 ms 868 KB Output is correct
5 Correct 112 ms 848 KB Output is correct
6 Correct 110 ms 884 KB Output is correct
7 Correct 100 ms 840 KB Output is correct
8 Correct 124 ms 836 KB Output is correct
9 Correct 119 ms 896 KB Output is correct
10 Correct 126 ms 880 KB Output is correct
11 Correct 124 ms 940 KB Output is correct
12 Correct 120 ms 856 KB Output is correct
13 Correct 127 ms 920 KB Output is correct
14 Correct 120 ms 916 KB Output is correct
15 Correct 123 ms 880 KB Output is correct
16 Correct 120 ms 864 KB Output is correct
17 Correct 119 ms 932 KB Output is correct
18 Correct 128 ms 848 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 101 ms 792 KB Output is correct
2 Correct 119 ms 876 KB Output is correct
3 Correct 129 ms 880 KB Output is correct
4 Correct 118 ms 868 KB Output is correct
5 Correct 112 ms 848 KB Output is correct
6 Correct 110 ms 884 KB Output is correct
7 Correct 100 ms 840 KB Output is correct
8 Correct 124 ms 836 KB Output is correct
9 Correct 119 ms 896 KB Output is correct
10 Correct 126 ms 880 KB Output is correct
11 Correct 124 ms 940 KB Output is correct
12 Correct 120 ms 856 KB Output is correct
13 Correct 127 ms 920 KB Output is correct
14 Correct 120 ms 916 KB Output is correct
15 Correct 123 ms 880 KB Output is correct
16 Correct 120 ms 864 KB Output is correct
17 Correct 119 ms 932 KB Output is correct
18 Correct 128 ms 848 KB Output is correct
19 Execution timed out 7040 ms 4148 KB Time limit exceeded
20 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 101 ms 792 KB Output is correct
2 Correct 119 ms 876 KB Output is correct
3 Correct 129 ms 880 KB Output is correct
4 Correct 118 ms 868 KB Output is correct
5 Correct 112 ms 848 KB Output is correct
6 Correct 110 ms 884 KB Output is correct
7 Correct 100 ms 840 KB Output is correct
8 Correct 124 ms 836 KB Output is correct
9 Correct 119 ms 896 KB Output is correct
10 Correct 126 ms 880 KB Output is correct
11 Correct 124 ms 940 KB Output is correct
12 Correct 120 ms 856 KB Output is correct
13 Correct 127 ms 920 KB Output is correct
14 Correct 120 ms 916 KB Output is correct
15 Correct 123 ms 880 KB Output is correct
16 Correct 120 ms 864 KB Output is correct
17 Correct 119 ms 932 KB Output is correct
18 Correct 128 ms 848 KB Output is correct
19 Correct 118 ms 820 KB Output is correct
20 Correct 132 ms 920 KB Output is correct
21 Incorrect 123 ms 836 KB Output isn't correct
22 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 101 ms 792 KB Output is correct
2 Correct 119 ms 876 KB Output is correct
3 Correct 129 ms 880 KB Output is correct
4 Correct 118 ms 868 KB Output is correct
5 Correct 112 ms 848 KB Output is correct
6 Correct 110 ms 884 KB Output is correct
7 Correct 100 ms 840 KB Output is correct
8 Correct 124 ms 836 KB Output is correct
9 Correct 119 ms 896 KB Output is correct
10 Correct 126 ms 880 KB Output is correct
11 Correct 124 ms 940 KB Output is correct
12 Correct 120 ms 856 KB Output is correct
13 Correct 127 ms 920 KB Output is correct
14 Correct 120 ms 916 KB Output is correct
15 Correct 123 ms 880 KB Output is correct
16 Correct 120 ms 864 KB Output is correct
17 Correct 119 ms 932 KB Output is correct
18 Correct 128 ms 848 KB Output is correct
19 Execution timed out 7040 ms 4148 KB Time limit exceeded
20 Halted 0 ms 0 KB -