PKU 2493 Rdeaalbe

  • 並べかえられた文字列はソートして比較すると良い
  • 短い文字列をソートしようとしてREをもらってしまった・・・
int main() {
	int n;
	cin >> n;
	for (int caseIndex = 1; caseIndex <= n; ++caseIndex) {
		map<string, int> dic;
		int m;
		cin >> m;
		for (int i = 0; i < m; ++i) {
			string s;
			cin >> s;
			if (s.size() >= 4) {
				sort(s.begin() + 1, s.end() - 1);
			}
			++dic[s];
		}

		cin >> m;
		cin.ignore();

		printf("Scenario #%d:\n", caseIndex);

		for (int i = 0; i < m; ++i) {
			int answer = 1;
			string line;
			getline(cin, line);

			istringstream iss(line);
			string word;
			while (iss >> word) {
				if (word.size() >= 4) {
					sort(word.begin() + 1, word.end() - 1);
				}
				answer *= dic[word];
			}

			printf("%d\n", answer);
		}

		printf("\n");
	}
}