# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
872990 |
2023-11-14T08:49:25 Z |
tsumondai |
Set (COCI21_set) |
C++14 |
|
124 ms |
27732 KB |
/*
Cho một số lượng các lá bài được biểu diễn bằng giá trị 1 2 3, một bộ ba unorder tripet là một cặp mà trong đó
các phần tử ở vị trí tương ứng đều bằng nhau hoặc khác nhau đôi một.
*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define foru(i, l, r) for(int i = l; i <= r; i++)
#define ford(i, r, l) for(int i = r; i >= l; i--)
#define __TIME (1.0 * clock() / CLOCKS_PER_SEC)
typedef pair<int, int> ii;
typedef pair<ii, int> iii;
typedef pair<ii, ii> iiii;
const int N = 1e6 + 5;
const int oo = 1e18, mod = 1e9 + 7;
int n, k;
int cnt[N];
struct Z_adjoin_w {
int x, y;
Z_adjoin_w () {
x = y = 0;
}
Z_adjoin_w (int _x, int _y) {
x = _x; y = _y;
}
} P[N];
const Z_adjoin_w w = Z_adjoin_w(0, 1);
const Z_adjoin_w w2 = Z_adjoin_w(-1, -1);
Z_adjoin_w add (Z_adjoin_w a, Z_adjoin_w b) {
return Z_adjoin_w(a.x + b.x, a.y + b.y);
}
Z_adjoin_w div_by_3 (Z_adjoin_w a) {
return Z_adjoin_w(a.x / 3, a.y / 3);
}
Z_adjoin_w mul (Z_adjoin_w a, Z_adjoin_w b) {
return Z_adjoin_w(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x - a.y * b.y);
}
void modified_FWHT (bool invert) {
int siz = 1;
for (int i = 0; i < k; i++) siz *= 3;
for (int len = 1; len < siz; len *= 3) {
for (int i = 0; i < siz; i += 3 * len) {
for (int j = 0; j < len; j++) {
Z_adjoin_w a = P[i + j + len * 0];
Z_adjoin_w b = P[i + j + len * 1];
Z_adjoin_w c = P[i + j + len * 2];
if (invert == 0) {
P[i + j + len * 0] = add(a, add(b, c));
P[i + j + len * 1] = add(a, add(mul(b, w), mul(c, w2)));
P[i + j + len * 2] = add(a, add(mul(b, w2), mul(c, w)));
} else {
P[i + j + len * 0] = div_by_3(add(a, add(b, c)));
P[i + j + len * 1] = div_by_3(add(a, add(mul(b, w2), mul(c, w))));
P[i + j + len * 2] = div_by_3(add(a, add(mul(b, w), mul(c, w2))));
}
}
}
}
}
void calc () {
int siz = 1;
for (int i = 0; i < k; i++) siz *= 3;
modified_FWHT(0);
for (int i = 0; i < siz; i++) {
P[i] = mul(P[i], P[i]);
}
modified_FWHT(1);
int sol = 0;
for (int i = 0; i < siz; i++) {
int val = i, comp = 0, pot = 1;
for (int j = 0; j < k; j++) {
comp += (3 - val % 3) % 3 * pot;
val /= 3;
pot *= 3;
}
sol += cnt[i] * (P[comp].x - 1);
}
cout << sol / 6;
}
signed main () {
//ios_base::sync_with_stdio(false);
//cin.tie(0);
scanf("%d%d", &n, &k);
getchar();
for (int i = 0; i < n; i++) {
int val = 0;
for (int j = 0; j < k; j++) {
char c = getchar();
val = val * 3 + c - '1';
}
getchar();
P[val] = Z_adjoin_w(1, 0);
cnt[val]++;
}
calc();
return 0;
}
Compilation message
Main.cpp: In function 'int main()':
Main.cpp:107:13: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
107 | scanf("%d%d", &n, &k);
| ~^ ~~
| | |
| int* long long int*
| %lld
Main.cpp:107:15: warning: format '%d' expects argument of type 'int*', but argument 3 has type 'long long int*' [-Wformat=]
107 | scanf("%d%d", &n, &k);
| ~^ ~~
| | |
| int* long long int*
| %lld
Main.cpp:107:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
107 | scanf("%d%d", &n, &k);
| ~~~~~^~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
16988 KB |
Output is correct |
2 |
Correct |
3 ms |
16988 KB |
Output is correct |
3 |
Correct |
3 ms |
16988 KB |
Output is correct |
4 |
Correct |
3 ms |
16988 KB |
Output is correct |
5 |
Correct |
3 ms |
16988 KB |
Output is correct |
6 |
Correct |
3 ms |
17040 KB |
Output is correct |
7 |
Correct |
3 ms |
16988 KB |
Output is correct |
8 |
Correct |
3 ms |
17004 KB |
Output is correct |
9 |
Correct |
3 ms |
16988 KB |
Output is correct |
10 |
Correct |
3 ms |
17236 KB |
Output is correct |
11 |
Correct |
3 ms |
16984 KB |
Output is correct |
12 |
Correct |
3 ms |
16988 KB |
Output is correct |
13 |
Correct |
3 ms |
17016 KB |
Output is correct |
14 |
Correct |
3 ms |
16988 KB |
Output is correct |
15 |
Correct |
3 ms |
16988 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
16988 KB |
Output is correct |
2 |
Correct |
3 ms |
16988 KB |
Output is correct |
3 |
Correct |
3 ms |
16988 KB |
Output is correct |
4 |
Correct |
3 ms |
16988 KB |
Output is correct |
5 |
Correct |
3 ms |
16988 KB |
Output is correct |
6 |
Correct |
3 ms |
17040 KB |
Output is correct |
7 |
Correct |
3 ms |
16988 KB |
Output is correct |
8 |
Correct |
3 ms |
17004 KB |
Output is correct |
9 |
Correct |
3 ms |
16988 KB |
Output is correct |
10 |
Correct |
3 ms |
17236 KB |
Output is correct |
11 |
Correct |
3 ms |
16984 KB |
Output is correct |
12 |
Correct |
3 ms |
16988 KB |
Output is correct |
13 |
Correct |
3 ms |
17016 KB |
Output is correct |
14 |
Correct |
3 ms |
16988 KB |
Output is correct |
15 |
Correct |
3 ms |
16988 KB |
Output is correct |
16 |
Correct |
3 ms |
17044 KB |
Output is correct |
17 |
Correct |
3 ms |
17024 KB |
Output is correct |
18 |
Correct |
3 ms |
17004 KB |
Output is correct |
19 |
Correct |
3 ms |
17236 KB |
Output is correct |
20 |
Correct |
3 ms |
16988 KB |
Output is correct |
21 |
Correct |
3 ms |
16988 KB |
Output is correct |
22 |
Correct |
3 ms |
16988 KB |
Output is correct |
23 |
Correct |
3 ms |
16984 KB |
Output is correct |
24 |
Correct |
3 ms |
16988 KB |
Output is correct |
25 |
Correct |
4 ms |
16988 KB |
Output is correct |
26 |
Correct |
3 ms |
16988 KB |
Output is correct |
27 |
Correct |
3 ms |
16988 KB |
Output is correct |
28 |
Correct |
3 ms |
16988 KB |
Output is correct |
29 |
Correct |
3 ms |
16988 KB |
Output is correct |
30 |
Correct |
3 ms |
17044 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
16988 KB |
Output is correct |
2 |
Correct |
3 ms |
16988 KB |
Output is correct |
3 |
Correct |
3 ms |
16988 KB |
Output is correct |
4 |
Correct |
3 ms |
16988 KB |
Output is correct |
5 |
Correct |
3 ms |
16988 KB |
Output is correct |
6 |
Correct |
3 ms |
17040 KB |
Output is correct |
7 |
Correct |
3 ms |
16988 KB |
Output is correct |
8 |
Correct |
3 ms |
17004 KB |
Output is correct |
9 |
Correct |
3 ms |
16988 KB |
Output is correct |
10 |
Correct |
3 ms |
17236 KB |
Output is correct |
11 |
Correct |
3 ms |
16984 KB |
Output is correct |
12 |
Correct |
3 ms |
16988 KB |
Output is correct |
13 |
Correct |
3 ms |
17016 KB |
Output is correct |
14 |
Correct |
3 ms |
16988 KB |
Output is correct |
15 |
Correct |
3 ms |
16988 KB |
Output is correct |
16 |
Correct |
3 ms |
17044 KB |
Output is correct |
17 |
Correct |
3 ms |
17024 KB |
Output is correct |
18 |
Correct |
3 ms |
17004 KB |
Output is correct |
19 |
Correct |
3 ms |
17236 KB |
Output is correct |
20 |
Correct |
3 ms |
16988 KB |
Output is correct |
21 |
Correct |
3 ms |
16988 KB |
Output is correct |
22 |
Correct |
3 ms |
16988 KB |
Output is correct |
23 |
Correct |
3 ms |
16984 KB |
Output is correct |
24 |
Correct |
3 ms |
16988 KB |
Output is correct |
25 |
Correct |
4 ms |
16988 KB |
Output is correct |
26 |
Correct |
3 ms |
16988 KB |
Output is correct |
27 |
Correct |
3 ms |
16988 KB |
Output is correct |
28 |
Correct |
3 ms |
16988 KB |
Output is correct |
29 |
Correct |
3 ms |
16988 KB |
Output is correct |
30 |
Correct |
3 ms |
17044 KB |
Output is correct |
31 |
Correct |
56 ms |
19036 KB |
Output is correct |
32 |
Correct |
56 ms |
19036 KB |
Output is correct |
33 |
Correct |
50 ms |
19032 KB |
Output is correct |
34 |
Correct |
124 ms |
27732 KB |
Output is correct |
35 |
Correct |
3 ms |
16988 KB |
Output is correct |
36 |
Correct |
3 ms |
16988 KB |
Output is correct |
37 |
Correct |
3 ms |
16988 KB |
Output is correct |
38 |
Correct |
85 ms |
27148 KB |
Output is correct |
39 |
Correct |
65 ms |
22620 KB |
Output is correct |
40 |
Correct |
83 ms |
26960 KB |
Output is correct |
41 |
Correct |
59 ms |
21644 KB |
Output is correct |
42 |
Correct |
85 ms |
27012 KB |
Output is correct |
43 |
Correct |
4 ms |
16984 KB |
Output is correct |
44 |
Correct |
3 ms |
16988 KB |
Output is correct |
45 |
Correct |
3 ms |
16988 KB |
Output is correct |