Submission #528625

# Submission time Handle Problem Language Result Execution time Memory
528625 2022-02-20T21:53:57 Z LucaDantas Genetics (BOI18_genetics) C++17
100 / 100
245 ms 69228 KB
#include <bits/stdc++.h>
using namespace std;

using ull = unsigned long long;

mt19937_64 rng(random_device{}());

constexpr int maxn = 4110;

int a[maxn][maxn], m;
ull w[maxn], peso[maxn][5], tudo[maxn], soma_pesos; // sum of the row

int val(char c) {
	if(c == 'A') return 1;
	if(c == 'C') return 2;
	if(c == 'G') return 3;
	return 4; // c == 'T'
}

int main() {
	int n, k; scanf("%d %d %d", &n, &m, &k);
	k = m-k;
	for(int i = 0; i < n; i++) {
		char s[maxn]; scanf(" %s", s);
		for(int j = 0; j < m; j++) {
			a[i][j] = val(s[j]); // estou codando para o caso onde só existem as letras A e C
		}
	}

	for(int i = 0; i < n; i++) // defino o peso de cada coluna
		w[i] = (ull) rng(), soma_pesos += w[i];

	for(int i = 0; i < n; i++)
		for(int j = 0; j < m; j++)
			peso[j][a[i][j]] += w[i];

	for(int i = 0; i < n; i++) {
		ull aq = 0;
		for(int j = 0; j < m; j++)
			aq += peso[j][a[i][j]] - w[i];

		bool ans = aq == (soma_pesos - w[i]) * k;

		if(ans) return printf("%d\n", i+1), 0;
	}
}

Compilation message

genetics.cpp: In function 'int main()':
genetics.cpp:21:17: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |  int n, k; scanf("%d %d %d", &n, &m, &k);
      |            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
genetics.cpp:24:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |   char s[maxn]; scanf(" %s", s);
      |                 ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 560 KB Output is correct
2 Correct 1 ms 700 KB Output is correct
3 Correct 0 ms 308 KB Output is correct
4 Correct 1 ms 544 KB Output is correct
5 Correct 1 ms 688 KB Output is correct
6 Correct 1 ms 716 KB Output is correct
7 Correct 1 ms 444 KB Output is correct
8 Correct 0 ms 300 KB Output is correct
9 Correct 1 ms 544 KB Output is correct
10 Correct 1 ms 716 KB Output is correct
11 Correct 1 ms 568 KB Output is correct
12 Correct 1 ms 716 KB Output is correct
13 Correct 1 ms 696 KB Output is correct
14 Correct 1 ms 696 KB Output is correct
15 Correct 1 ms 708 KB Output is correct
16 Correct 1 ms 716 KB Output is correct
17 Correct 0 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 18352 KB Output is correct
2 Correct 44 ms 22660 KB Output is correct
3 Correct 49 ms 21548 KB Output is correct
4 Correct 12 ms 8140 KB Output is correct
5 Correct 48 ms 22616 KB Output is correct
6 Correct 48 ms 22556 KB Output is correct
7 Correct 22 ms 10128 KB Output is correct
8 Correct 20 ms 10060 KB Output is correct
9 Correct 45 ms 21104 KB Output is correct
10 Correct 46 ms 21096 KB Output is correct
11 Correct 42 ms 18500 KB Output is correct
12 Correct 40 ms 18480 KB Output is correct
13 Correct 39 ms 18420 KB Output is correct
14 Correct 35 ms 15752 KB Output is correct
15 Correct 33 ms 15888 KB Output is correct
16 Correct 34 ms 16580 KB Output is correct
17 Correct 47 ms 21572 KB Output is correct
18 Correct 45 ms 21456 KB Output is correct
19 Correct 49 ms 21668 KB Output is correct
20 Correct 47 ms 21372 KB Output is correct
21 Correct 48 ms 21608 KB Output is correct
22 Correct 47 ms 21440 KB Output is correct
23 Correct 47 ms 21556 KB Output is correct
24 Correct 47 ms 21492 KB Output is correct
25 Correct 45 ms 21400 KB Output is correct
26 Correct 47 ms 21580 KB Output is correct
27 Correct 46 ms 21428 KB Output is correct
28 Correct 45 ms 21388 KB Output is correct
29 Correct 47 ms 21572 KB Output is correct
30 Correct 40 ms 22560 KB Output is correct
31 Correct 44 ms 22820 KB Output is correct
32 Correct 47 ms 22652 KB Output is correct
33 Correct 0 ms 332 KB Output is correct
34 Correct 1 ms 716 KB Output is correct
35 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 18352 KB Output is correct
2 Correct 44 ms 22660 KB Output is correct
3 Correct 49 ms 21548 KB Output is correct
4 Correct 12 ms 8140 KB Output is correct
5 Correct 48 ms 22616 KB Output is correct
6 Correct 48 ms 22556 KB Output is correct
7 Correct 22 ms 10128 KB Output is correct
8 Correct 20 ms 10060 KB Output is correct
9 Correct 45 ms 21104 KB Output is correct
10 Correct 46 ms 21096 KB Output is correct
11 Correct 42 ms 18500 KB Output is correct
12 Correct 40 ms 18480 KB Output is correct
13 Correct 39 ms 18420 KB Output is correct
14 Correct 35 ms 15752 KB Output is correct
15 Correct 33 ms 15888 KB Output is correct
16 Correct 34 ms 16580 KB Output is correct
17 Correct 47 ms 21572 KB Output is correct
18 Correct 45 ms 21456 KB Output is correct
19 Correct 49 ms 21668 KB Output is correct
20 Correct 47 ms 21372 KB Output is correct
21 Correct 48 ms 21608 KB Output is correct
22 Correct 47 ms 21440 KB Output is correct
23 Correct 47 ms 21556 KB Output is correct
24 Correct 47 ms 21492 KB Output is correct
25 Correct 45 ms 21400 KB Output is correct
26 Correct 47 ms 21580 KB Output is correct
27 Correct 46 ms 21428 KB Output is correct
28 Correct 45 ms 21388 KB Output is correct
29 Correct 47 ms 21572 KB Output is correct
30 Correct 40 ms 22560 KB Output is correct
31 Correct 44 ms 22820 KB Output is correct
32 Correct 47 ms 22652 KB Output is correct
33 Correct 0 ms 332 KB Output is correct
34 Correct 1 ms 716 KB Output is correct
35 Correct 1 ms 332 KB Output is correct
36 Correct 196 ms 60988 KB Output is correct
37 Correct 198 ms 68424 KB Output is correct
38 Correct 228 ms 67776 KB Output is correct
39 Correct 88 ms 40264 KB Output is correct
40 Correct 225 ms 68836 KB Output is correct
41 Correct 113 ms 36072 KB Output is correct
42 Correct 110 ms 36172 KB Output is correct
43 Correct 162 ms 58740 KB Output is correct
44 Correct 219 ms 69228 KB Output is correct
45 Correct 227 ms 69072 KB Output is correct
46 Correct 217 ms 69184 KB Output is correct
47 Correct 198 ms 60868 KB Output is correct
48 Correct 202 ms 60916 KB Output is correct
49 Correct 164 ms 52676 KB Output is correct
50 Correct 174 ms 52568 KB Output is correct
51 Correct 194 ms 58812 KB Output is correct
52 Correct 228 ms 67520 KB Output is correct
53 Correct 230 ms 67520 KB Output is correct
54 Correct 186 ms 67532 KB Output is correct
55 Correct 202 ms 67620 KB Output is correct
56 Correct 213 ms 67512 KB Output is correct
57 Correct 229 ms 67652 KB Output is correct
58 Correct 222 ms 67524 KB Output is correct
59 Correct 217 ms 67116 KB Output is correct
60 Correct 219 ms 67568 KB Output is correct
61 Correct 218 ms 67088 KB Output is correct
62 Correct 221 ms 67012 KB Output is correct
63 Correct 215 ms 67248 KB Output is correct
64 Correct 217 ms 67268 KB Output is correct
65 Correct 226 ms 67128 KB Output is correct
66 Correct 223 ms 67072 KB Output is correct
67 Correct 226 ms 67360 KB Output is correct
68 Correct 223 ms 67308 KB Output is correct
69 Correct 213 ms 66748 KB Output is correct
70 Correct 231 ms 67012 KB Output is correct
71 Correct 220 ms 66660 KB Output is correct
72 Correct 226 ms 67012 KB Output is correct
73 Correct 220 ms 66484 KB Output is correct
74 Correct 0 ms 332 KB Output is correct
75 Correct 1 ms 716 KB Output is correct
76 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 560 KB Output is correct
2 Correct 1 ms 700 KB Output is correct
3 Correct 0 ms 308 KB Output is correct
4 Correct 1 ms 544 KB Output is correct
5 Correct 1 ms 688 KB Output is correct
6 Correct 1 ms 716 KB Output is correct
7 Correct 1 ms 444 KB Output is correct
8 Correct 0 ms 300 KB Output is correct
9 Correct 1 ms 544 KB Output is correct
10 Correct 1 ms 716 KB Output is correct
11 Correct 1 ms 568 KB Output is correct
12 Correct 1 ms 716 KB Output is correct
13 Correct 1 ms 696 KB Output is correct
14 Correct 1 ms 696 KB Output is correct
15 Correct 1 ms 708 KB Output is correct
16 Correct 1 ms 716 KB Output is correct
17 Correct 0 ms 332 KB Output is correct
18 Correct 42 ms 18352 KB Output is correct
19 Correct 44 ms 22660 KB Output is correct
20 Correct 49 ms 21548 KB Output is correct
21 Correct 12 ms 8140 KB Output is correct
22 Correct 48 ms 22616 KB Output is correct
23 Correct 48 ms 22556 KB Output is correct
24 Correct 22 ms 10128 KB Output is correct
25 Correct 20 ms 10060 KB Output is correct
26 Correct 45 ms 21104 KB Output is correct
27 Correct 46 ms 21096 KB Output is correct
28 Correct 42 ms 18500 KB Output is correct
29 Correct 40 ms 18480 KB Output is correct
30 Correct 39 ms 18420 KB Output is correct
31 Correct 35 ms 15752 KB Output is correct
32 Correct 33 ms 15888 KB Output is correct
33 Correct 34 ms 16580 KB Output is correct
34 Correct 47 ms 21572 KB Output is correct
35 Correct 45 ms 21456 KB Output is correct
36 Correct 49 ms 21668 KB Output is correct
37 Correct 47 ms 21372 KB Output is correct
38 Correct 48 ms 21608 KB Output is correct
39 Correct 47 ms 21440 KB Output is correct
40 Correct 47 ms 21556 KB Output is correct
41 Correct 47 ms 21492 KB Output is correct
42 Correct 45 ms 21400 KB Output is correct
43 Correct 47 ms 21580 KB Output is correct
44 Correct 46 ms 21428 KB Output is correct
45 Correct 45 ms 21388 KB Output is correct
46 Correct 47 ms 21572 KB Output is correct
47 Correct 40 ms 22560 KB Output is correct
48 Correct 44 ms 22820 KB Output is correct
49 Correct 47 ms 22652 KB Output is correct
50 Correct 0 ms 332 KB Output is correct
51 Correct 1 ms 716 KB Output is correct
52 Correct 1 ms 332 KB Output is correct
53 Correct 196 ms 60988 KB Output is correct
54 Correct 198 ms 68424 KB Output is correct
55 Correct 228 ms 67776 KB Output is correct
56 Correct 88 ms 40264 KB Output is correct
57 Correct 225 ms 68836 KB Output is correct
58 Correct 113 ms 36072 KB Output is correct
59 Correct 110 ms 36172 KB Output is correct
60 Correct 162 ms 58740 KB Output is correct
61 Correct 219 ms 69228 KB Output is correct
62 Correct 227 ms 69072 KB Output is correct
63 Correct 217 ms 69184 KB Output is correct
64 Correct 198 ms 60868 KB Output is correct
65 Correct 202 ms 60916 KB Output is correct
66 Correct 164 ms 52676 KB Output is correct
67 Correct 174 ms 52568 KB Output is correct
68 Correct 194 ms 58812 KB Output is correct
69 Correct 228 ms 67520 KB Output is correct
70 Correct 230 ms 67520 KB Output is correct
71 Correct 186 ms 67532 KB Output is correct
72 Correct 202 ms 67620 KB Output is correct
73 Correct 213 ms 67512 KB Output is correct
74 Correct 229 ms 67652 KB Output is correct
75 Correct 222 ms 67524 KB Output is correct
76 Correct 217 ms 67116 KB Output is correct
77 Correct 219 ms 67568 KB Output is correct
78 Correct 218 ms 67088 KB Output is correct
79 Correct 221 ms 67012 KB Output is correct
80 Correct 215 ms 67248 KB Output is correct
81 Correct 217 ms 67268 KB Output is correct
82 Correct 226 ms 67128 KB Output is correct
83 Correct 223 ms 67072 KB Output is correct
84 Correct 226 ms 67360 KB Output is correct
85 Correct 223 ms 67308 KB Output is correct
86 Correct 213 ms 66748 KB Output is correct
87 Correct 231 ms 67012 KB Output is correct
88 Correct 220 ms 66660 KB Output is correct
89 Correct 226 ms 67012 KB Output is correct
90 Correct 220 ms 66484 KB Output is correct
91 Correct 0 ms 332 KB Output is correct
92 Correct 1 ms 716 KB Output is correct
93 Correct 1 ms 332 KB Output is correct
94 Correct 217 ms 65624 KB Output is correct
95 Correct 191 ms 67828 KB Output is correct
96 Correct 234 ms 67900 KB Output is correct
97 Correct 131 ms 38428 KB Output is correct
98 Correct 98 ms 40280 KB Output is correct
99 Correct 230 ms 68164 KB Output is correct
100 Correct 117 ms 35908 KB Output is correct
101 Correct 120 ms 36024 KB Output is correct
102 Correct 162 ms 58392 KB Output is correct
103 Correct 224 ms 68420 KB Output is correct
104 Correct 243 ms 68344 KB Output is correct
105 Correct 238 ms 68292 KB Output is correct
106 Correct 223 ms 65348 KB Output is correct
107 Correct 201 ms 60356 KB Output is correct
108 Correct 171 ms 52180 KB Output is correct
109 Correct 201 ms 59336 KB Output is correct
110 Correct 198 ms 58052 KB Output is correct
111 Correct 245 ms 67908 KB Output is correct
112 Correct 230 ms 67272 KB Output is correct
113 Correct 190 ms 66628 KB Output is correct
114 Correct 186 ms 66580 KB Output is correct
115 Correct 222 ms 66244 KB Output is correct
116 Correct 234 ms 67076 KB Output is correct
117 Correct 230 ms 67076 KB Output is correct
118 Correct 228 ms 66972 KB Output is correct
119 Correct 225 ms 66532 KB Output is correct
120 Correct 230 ms 66692 KB Output is correct
121 Correct 196 ms 59216 KB Output is correct
122 Correct 195 ms 66388 KB Output is correct
123 Correct 232 ms 65996 KB Output is correct
124 Correct 0 ms 332 KB Output is correct
125 Correct 1 ms 716 KB Output is correct
126 Correct 1 ms 332 KB Output is correct