QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#178180#2337. AzulejosPetroTarnavskyi#WA 5ms40708kbC++171.7kb2023-09-13 19:10:032023-09-13 19:10:03

Judging History

This is the latest submission verdict.

  • [2023-09-13 19:10:03]
  • Judged
  • Verdict: WA
  • Time: 5ms
  • Memory: 40708kb
  • [2023-09-13 19:10:03]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define RFOR(i, b, a) for (int i = (b) - 1; i >= (a); i--)
#define SZ(a) int(a.size())
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
#define F first
#define S second

typedef unsigned long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef double db;

const int MAX = 1'000'447;
LL h[MAX];
LL pw[MAX + 47];
int c[MAX];
unordered_set<int> len;
unordered_map<LL, int> m;
VI g[MAX];
vector<int> st;
LL hq[MAX];
LL p = 47;

void dfs(int v)
{
	if (v != 0)
	{
		int x = c[v] - 'A' + 1;
		h[v] = h[st.back()] * p + x;
		st.PB(v);
		for (auto l : len)
		{
			if (l < SZ(st))
			{
				int i = SZ(st) - l - 1;
				LL H = pw[MAX];
				LL hash = (h[v] - h[st[i]] * pw[l]) * H;
				if (m.count(hash))
					m[hash]++;
			}
		}
	}
	else
	{
		h[v] = 0;
		st.PB(v);
	}
	for (auto to : g[v])
		dfs(to);
	st.pop_back();
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout << fixed << setprecision(15);

	pw[0] = 1;
	FOR (i, 1, MAX + 7)
	{
		pw[i] = pw[i - 1] * p;
	}

	int n, k;
	cin >> n >> k;
	//len.reserve(474747);
	vector<string> v(k);
	FOR (i, 0, n)
	{
		char ch;
		int par;
		cin >> ch >> par;
		c[i + 1] = ch;
		g[par].PB(i + 1);
	}
	//m.reserve(2'474'747);
	FOR (i, 0, k)
	{
		cin >> v[i];
		len.insert(SZ(v[i]));
		
		LL hs = 0;
		FOR (j, 0, SZ(v[i]))
		{
			int x = v[i][j] - 'A' + 1;
			hs = hs + x * pw[j];
		}
		hs = hs * pw[MAX];
		m[hs] = 0;
		hq[i] = hs;
	}
	
	dfs(0);
	
	FOR (i, 0, k)
	{
		cout << m[hq[i]] << '\n';
	}
	cerr << double(clock()) / CLOCKS_PER_SEC << '\n';
	
	return 0;
}

Details

Test #1:

score: 0
Wrong Answer
time: 5ms
memory: 40708kb