# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1015499 | daffuwu | Crossing (JOI21_crossing) | C++14 | 7092 ms | 5932 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define fr first
#define sc second
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
long long n, sz, q, l, r;
bool bad;
char ch;
string s[3], cs, t0;
vector<string> ls;
map<string, bool> ex;
char crot(char a, char b)
{
if (a>b) swap(a, b);
if (a == b) return a;
if (a == 'I' && b == 'J') return 'O';
if (a == 'I' && b == 'O') return 'J';
return 'I';
}
string cross(string a, string b)
{
int i;
string c = "";
for (i=0; i<n; i++)
{
c += crot(a[i], b[i]);
}
return c;
}
int main()
{
long long i, j, rr;
scanf("%lld", &n);
cin >> s[0] >> s[1] >> s[2];
ex[s[0]] = ex[s[1]] = ex[s[2]] = 1;
for (auto [ky, _]:ex) ls.push_back(ky);
for (; 1;)
{
sz = ls.size();
bad = 1;
for (i=0; i<sz; i++)
{
for (j=i+1; j<sz; j++)
{
cs = cross(ls[i], ls[j]);
if (!ex.count(cs))
{
ex[cs] = 1;
bad = 0;
i = sz+1;
break;
}
}
}
if (bad) break;
ls.push_back(cs);
}
// printf("terdapat %lld string:\n", (long long)ls.size());
// for (auto el:ls)
// {
// cout << el << "\n";
// }
// printf("crot\n");
scanf("%lld", &q);
for (rr=0; rr<=q; rr++)
{
if (rr == 0) cin >> t0;
else
{
scanf("%lld%lld %c", &l, &r, &ch);
l--;
r--;
for (i=l; i<=r; i++) t0[i] = ch;
}
bad = 1;
for (auto el:ls)
{
if (t0 == el) bad = 0;
}
if (bad) printf("No\n");
else printf("Yes\n");
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |