제출 #1123317

#제출 시각아이디문제언어결과실행 시간메모리
1123317WhisperCrossing (JOI21_crossing)C++20
26 / 100
42 ms1364 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define int long long #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define FORD(i, a, b) for (int i = (b); i >= (a); i --) #define REP(i, a) for (int i = 0; i < (a); ++i) #define REPD(i, a) for (int i = (a) - 1; i >= 0; --i) #define MASK(i) (1LL << (i)) #define BIT(x, i) (((x) >> (i)) & 1) constexpr ll LINF = (1ll << 60); constexpr int INF = (1ll << 30); constexpr int Mod = 1e9 + 7; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); /* Phu Trong from Nguyen Tat Thanh High School for gifted student */ template <class X, class Y> bool minimize(X &x, const Y &y){ X eps = 1e-9; if (x > y + eps) {x = y; return 1;} return 0; } template <class X, class Y> bool maximize(X &x, const Y &y){ X eps = 1e-9; if (x + eps < y) {x = y; return 1;} return 0; } #define MAX 200005 int N, numQuery; string s[3], now; char other(char a, char b){ if(a != 'J' and b != 'J') return 'J'; if(a != 'O' and b != 'O') return 'O'; if(a != 'I' and b != 'I') return 'I'; } string cross(string &a, string &b){ assert((int)a.size() == (int)b.size()); int n = (int)a.size() - 1; string nw = "@"; for (int i = 1; i <= n; ++i){ if(a[i] == b[i]) nw += a[i]; else nw += other(a[i], b[i]); } return nw; } namespace SUBTASK_3{ bool check(void){ return N <= 100; } queue<string> q; map<string, int> reach; void main(void){ reach[s[0]] = reach[s[1]] = reach[s[2]] = true; q.emplace(s[0]); q.emplace(s[1]); q.emplace(s[2]); while(q.size()){ string now = q.front(); q.pop(); REP(i, 3){ string nxt = cross(now, s[i]); if(!reach.count(nxt)){ q.emplace(nxt); reach[nxt] = true; } } } cin >> numQuery >> now; now = '@' + now; if(reach.count(now)) cout << "Yes\n"; else cout << "No\n"; for (int qu = 1; qu <= numQuery; ++qu){ int l, r; char c; cin >> l >> r >> c; FOR(i, l, r) now[i] = c; if(reach.count(now)) cout << "Yes\n"; else cout << "No\n"; } } } void process(void){ cin >> N; REP(i, 3) { cin >> s[i]; s[i] = '@' + s[i]; } if(SUBTASK_3 :: check()){ SUBTASK_3 :: main(); return; } } signed main(){ #define name "Whisper" cin.tie(nullptr) -> sync_with_stdio(false); // freopen(name".inp", "r", stdin); // freopen(name".out", "w", stdout); process(); return (0 ^ 0); }

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'char other(char, char)':
Main.cpp:46:1: warning: control reaches end of non-void function [-Wreturn-type]
   46 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...