Submission #135674

#TimeUsernameProblemLanguageResultExecution timeMemory
135674onjo0127PIN (CEOI10_pin)C++11
100 / 100
479 ms12092 KiB
#include <bits/stdc++.h>
using namespace std;

int N, D;
unordered_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;
}

long long solve1() {
	long long ans = 0;
	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)];
	}
	return ans;
}

long long solve2() {
	long long ans = 0;
	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)];
	}
	return ans;
}

long long solve3() {
	long long ans = 0;
	for(int i=1; i<=N; i++) {
		ans += mp[make(S[i], 14)];
		ans += mp[make(S[i], 13)];
		ans += mp[make(S[i], 11)];
		ans += mp[make(S[i], 7)];

		ans -= 2*mp[make(S[i], 3)];
		ans -= 2*mp[make(S[i], 5)];
		ans -= 2*mp[make(S[i], 9)];
		ans -= 2*mp[make(S[i], 6)];
		ans -= 2*mp[make(S[i], 10)];
		ans -= 2*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)];
	}
	return ans;
}

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

	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) cout << solve1() / 2;
	if(D == 2) cout << solve2() / 2;
	if(D == 3) cout << solve3() / 2;
	if(D == 4) cout << (1LL*N*(N-1) - solve1() - solve2() - solve3()) / 2;
	return 0;
}

Compilation message (stderr)

pin.cpp: In function 'int main()':
pin.cpp:75:12: warning: unused variable 'ans' [-Wunused-variable]
  long long ans = 0;
            ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...