Submission #1158599

#TimeUsernameProblemLanguageResultExecution timeMemory
1158599Der_VlaposCrossing (JOI21_crossing)C++20
26 / 100
7093 ms7280 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define f first
#define s second
#define pii pair<int, int>
#define all(v) v.begin(), v.end()
#define pb push_back

#define int ll

struct test
{
	int n;
	map<pii, int> val;

	vector<int> op(vector<int> &s1, vector<int> &s2)
	{
		vector<int> res(n);
		for (int i = 0; i < n; ++i)
			res[i] = val[{s1[i], s2[i]}];
		return res;
	}

	void solve()
	{
		cin >> n;

		vector<vector<int>> strs(3, vector<int>(n));
		map<char, int> letter;
		letter['J'] = 0;
		letter['O'] = 1;
		letter['I'] = 2;
		for (int i = 0; i < 3; ++i)
		{
			for (int pos = 0; pos < n; ++pos)
			{
				char x;
				cin >> x;
				strs[i][pos] = letter[x];
			}
		}
		for (int i = 0; i < 3; ++i)
			for (int j = 0; j < 3; ++j)
			{
				val[{i, j}] = i;
				if (i != j)
					for (int k = 0; k < 3; ++k)
						if (k != i and k != j)
							val[{i, j}] = k;
			}

		for (int i = 0; i < strs.size(); ++i)
			for (int j = 0; j < i; ++j)
			{
				auto cur = op(strs[i], strs[j]);
				bool good = true;
				for (int k = 0; k < strs.size(); ++k)
					if (cur == strs[k])
						good = false;
				if (good)
					strs.pb(cur);
			}
		// for (auto el : strs)
		// {
		// 	for (int i = 0; i < n; ++i)
		// 		cout << el[i] << " ";
		// 	cout << "\n";
		// }

		int q;
		cin >> q;
		vector<int> curT(n);
		for (int i = 0; i < n; ++i)
		{
			char x;
			cin >> x;
			curT[i] = letter[x];
		}

		{
			bool good = false;
			for (int i = 0; i < strs.size(); ++i)
				if (curT == strs[i])
					good = true;
			cout << (good ? "Yes" : "No") << "\n";
		}

		for (int i = 0; i < q; ++i)
		{
			int l, r, x;
			cin >> l >> r;
			{
				char bf;
				cin >> bf;
				x = letter[bf];
			}
			--l, --r;
			for (int i = l; i <= r; ++i)
				curT[i] = x;

			{
				bool good = false;
				for (int i = 0; i < strs.size(); ++i)
					if (curT == strs[i])
						good = true;
				cout << (good ? "Yes" : "No") << "\n";
			}
		}
	}
};

main()
{
	test t;
	t.solve();
}

Compilation message (stderr)

Main.cpp:114:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
  114 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...