Submission #198713

# Submission time Handle Problem Language Result Execution time Memory
198713 2020-01-27T12:56:08 Z Neklixx PIN (CEOI10_pin) C++14
60 / 100
171 ms 12264 KB
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(v) v.begin(), v.end()
#define sh cin.tie(0); cin.sync_with_stdio(0); cout.tie(0);
#define FILE freopen("test.in", "r", stdin);
#define vprint(v) for (int ii = 0; ii < v.size(); ii++){cout << v[ii] << " ";}
#define debugv(v) if (v.size() != 0) {cout << "[ "; for (int __ = 0; __ < (int)(v.size()) - 1; __++){cout << v[__] << ", ";} cout << v[(int)(v.size()) - 1] << " ]" << endl;} else {cout << "[]" << endl;}
#define debug cout << "-----------------------------------------------" << endl;
#define print1(a) cout << "{ " << a << " }" << endl;
#define print2(a, b) cout << "{ " << a << ", " << b << " }" << endl;
#define print3(a, b, c) cout << "{ " << a << ", " << b << ", " << c << " }" << endl;
#define print4(a, b, c, d) cout << "{ " << a << ", " << b << ", " << c << ", " << d << " }" << endl;
using namespace std;
#define int long long
const int INF = 1e9 + 228;
const int MAXN = 1e3 + 28;
map<string, int> mapa[MAXN];

string to2(int x) {
	string res = "";
	while (x > 0) {
		res += (x % 2);
		x /= 2;
	}
	char zero = 0;
	while (res.size() < 4) {
		res += zero;
	}
	return res;
}
int n;
vector<string> v;
int calc(int d) {
	int ans = 0;
	for (int mask = 0; mask < (1 << 4); mask++) {
		string now = to2(mask);
		int sm = 0;
		for (int i = 0; i < now.size(); i++) {
			sm += now[i];
		}	
		if (sm != 4 - d)
			continue;
		for (int i = 0; i < n; i++) {
			string t = "";
			for (int j = 0; j < now.size(); j++) {
				if (now[j] == 0)
					continue;
				t += v[i][j];
			}
			mapa[mask][t]++;
		}
		for (auto to : mapa[mask]) {
			ans += ((to.S * (to.S - 1)) / 2);
		}
	}
	return ans;
}
signed main()
{
#ifdef LOCAL
    FILE;
#endif
    sh;
    int d;
	cin >> n >> d;
	for (int i = 0; i < n; i++) {
		string s;
		cin >> s;
		v.pb(s);
	}    
	vector<int> c;
	c.pb(calc(1));
	c.pb(calc(2));
	c.pb(calc(3));
	c.pb(calc(4));
	//assert(d == 1);
	int ans = c[d - 1];
	if (d == 2) {
		ans -= c[0] * 3;
	}
	cout << ans << endl;
    return 0;
}

Compilation message

pin.cpp: In function 'long long int calc(long long int)':
pin.cpp:41:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < now.size(); i++) {
                   ~~^~~~~~~~~~~~
pin.cpp:48:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int j = 0; j < now.size(); j++) {
                    ~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 10 ms 1016 KB Output is correct
2 Correct 10 ms 1016 KB Output is correct
3 Incorrect 9 ms 888 KB Output isn't correct
4 Correct 47 ms 2416 KB Output is correct
5 Correct 57 ms 2672 KB Output is correct
6 Correct 58 ms 2668 KB Output is correct
7 Correct 47 ms 2416 KB Output is correct
8 Correct 61 ms 2672 KB Output is correct
9 Correct 94 ms 3180 KB Output is correct
10 Correct 102 ms 3432 KB Output is correct
11 Correct 59 ms 2636 KB Output is correct
12 Incorrect 97 ms 3304 KB Output isn't correct
13 Incorrect 65 ms 2660 KB Output isn't correct
14 Incorrect 61 ms 2672 KB Output isn't correct
15 Incorrect 101 ms 3304 KB Output isn't correct
16 Correct 120 ms 9576 KB Output is correct
17 Correct 171 ms 12264 KB Output is correct
18 Incorrect 132 ms 10344 KB Output isn't correct
19 Incorrect 161 ms 11472 KB Output isn't correct
20 Incorrect 167 ms 12264 KB Output isn't correct