#include <bits/stdc++.h>
#define long long long int
#define DEBUG
using namespace std;
// @author: pashka
long calc(vector<string> &a, vector<pair<int, int>> p) {
map<long, int> m1;
map<long, int> m2;
long res = 0;
for (int i = 0; i < (int) a.size(); i++) {
long s1, s2;
for (auto [x, y]: p) {
s1 += a[i][x] - 'A';
s2 += a[i][y] - 'A';
s1 *= 30;
s2 *= 30;
}
res += m2[s1];
res += m1[s2];
m1[s1]++;
m2[s2]++;
}
cerr << res << "\n";
return res;
}
char buf[10];
int main() {
ios::sync_with_stdio(false);
int n;
scanf("%d", &n);
vector<string> a(n);
for (int i = 0; i < n; i++) {
string x, y;
scanf("%s", buf);
x = buf;
scanf("%s", buf);
y = buf;
a[i] = x + y;
}
long res = 0;
res += calc(a, {{0, 2},
{1, 3}});
res += calc(a, {{0, 1},
{2, 3}});
res -= calc(a, {{0, 2},
{1, 3},
{2, 0},
{3, 1}}) / 2;
res -= calc(a, {{0, 1},
{2, 3},
{1, 0},
{3, 2}}) / 2;
res -= calc(a, {{0, 2},
{1, 3},
{1, 0},
{3, 2}});
res -= calc(a, {{0, 2},
{1, 3},
{0, 1},
{2, 3}});
vector<string> a3;
for (string s: a) {
if (s[0] == s[3] && s[1] == s[2]) a3.push_back(s);
}
res += calc(a3, {{0, 2},
{1, 3}}) / 2 * 3;
cout << res << "\n";
return 0;
}
Compilation message
korteles.cpp: In function 'long long int calc(std::vector<std::__cxx11::basic_string<char> >&, std::vector<std::pair<int, int> >)':
korteles.cpp:16:19: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
16 | for (auto [x, y]: p) {
| ^
korteles.cpp: In function 'int main()':
korteles.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
37 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
korteles.cpp:41:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
41 | scanf("%s", buf);
| ~~~~~^~~~~~~~~~~
korteles.cpp:43:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
43 | scanf("%s", buf);
| ~~~~~^~~~~~~~~~~
korteles.cpp: In function 'long long int calc(std::vector<std::__cxx11::basic_string<char> >&, std::vector<std::pair<int, int> >)':
korteles.cpp:17:16: warning: 's1' may be used uninitialized in this function [-Wmaybe-uninitialized]
17 | s1 += a[i][x] - 'A';
| ~~~^~~~~~~~~~~~~~~~
korteles.cpp:18:16: warning: 's2' may be used uninitialized in this function [-Wmaybe-uninitialized]
18 | s2 += a[i][y] - 'A';
| ~~~^~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
1062 ms |
98472 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Incorrect |
733 ms |
14348 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Incorrect |
0 ms |
212 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |