답안 #135361

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
135361 2019-07-24T04:20:33 Z 이온조(#3249) PIN (CEOI10_pin) C++14
60 / 100
646 ms 12260 KB
#include <bits/stdc++.h>
using namespace std;

map<string, int> mp;
string S[50009];

string make(string S, int msk) {
	for(int i=0; i<4; i++) if((msk >> i) & 1) S[i] = '_';
	return S;
}

int main() {
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);

	int N, D; cin >> N >> D;
	for(int i=1; i<=N; i++) {
		cin >> S[i];
		for(int j=1; j<16; j++) ++mp[make(S[i], j)];
	}
	for(auto& it: mp) --it.second;
	long long ans = 0;
	if(D == 1) {
		for(int i=1; i<=N; i++) {
			ans += mp[make(S[i], 1)];
			ans += mp[make(S[i], 2)];
			ans += mp[make(S[i], 4)];
			ans += mp[make(S[i], 8)];
		}
		cout << ans / 2;
	}
	else {
		for(int i=1; i<=N; i++) {
			ans += mp[make(S[i], 3)];
			ans += mp[make(S[i], 5)];
			ans += mp[make(S[i], 9)];
			ans += mp[make(S[i], 6)];
			ans += mp[make(S[i], 10)];
			ans += mp[make(S[i], 12)];

			ans -= 3*mp[make(S[i], 1)];
			ans -= 3*mp[make(S[i], 2)];
			ans -= 3*mp[make(S[i], 4)];
			ans -= 3*mp[make(S[i], 8)];
		}
		cout << ans / 2;
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 2424 KB Output is correct
2 Correct 14 ms 2424 KB Output is correct
3 Incorrect 12 ms 2424 KB Output isn't correct
4 Correct 116 ms 3416 KB Output is correct
5 Correct 144 ms 3448 KB Output is correct
6 Correct 191 ms 3320 KB Output is correct
7 Correct 261 ms 3428 KB Output is correct
8 Correct 163 ms 3448 KB Output is correct
9 Correct 259 ms 3320 KB Output is correct
10 Correct 362 ms 3320 KB Output is correct
11 Correct 188 ms 3452 KB Output is correct
12 Incorrect 324 ms 3320 KB Output isn't correct
13 Incorrect 210 ms 3320 KB Output isn't correct
14 Incorrect 196 ms 3452 KB Output isn't correct
15 Incorrect 330 ms 3320 KB Output isn't correct
16 Correct 341 ms 10148 KB Output is correct
17 Correct 646 ms 12260 KB Output is correct
18 Incorrect 447 ms 10860 KB Output isn't correct
19 Incorrect 552 ms 11600 KB Output isn't correct
20 Incorrect 615 ms 12164 KB Output isn't correct