| Task: | Ruudukko |
| Sender: | pants64 |
| Submission time: | 2019-10-01 19:58:20 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 0 |
| test | verdict | time | |
|---|---|---|---|
| #1 | WRONG ANSWER | 0.01 s | details |
| #2 | WRONG ANSWER | 0.01 s | details |
| #3 | WRONG ANSWER | 0.01 s | details |
| #4 | WRONG ANSWER | 0.01 s | details |
| #5 | WRONG ANSWER | 0.01 s | details |
| #6 | WRONG ANSWER | 0.01 s | details |
Code
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <cstdint>
using std::cout, std::cin, std::vector, std::string;
struct Hash
{
size_t operator()(const std::vector<uint8_t>& vec) const
{
std::hash<uint8_t> hasher;
size_t seed = 0;
for (int i : vec)
{
seed ^= hasher(i) + 0x0959f0d8 + (seed << 6) + (seed >> 2);
}
return seed;
}
};
vector<uint8_t> Convert(const string& str)
{
vector<uint8_t> line (str.length(), 0);
uint8_t max = 0;
for (unsigned i = 0; i < str.length(); i++)
{
bool found = false;
for (unsigned j = 0; j < i; j++)
{
if (str[j] == str[i])
{
line[i] = line[j];
found = true;
if (max < line[i]) max = line[i];
break;
}
}
if (!found) line[i] = max++;
}
return line;
}
int main()
{
int n;
cin >> n;
std::unordered_map <vector<uint8_t>, int, Hash> lines;
for (int i = 0; i < n; i++)
{
string input;
cin >> input;
lines[Convert(input)]++;
}
int num = 0;
for (auto it=lines.begin(); it!=lines.end(); it++)
{
int count = it->second;
num += (count * (count - 1)) / 2;
}
cout << num << "\n";
}Test details
Test 1
Verdict: WRONG ANSWER
| input |
|---|
| 1 |
| correct output |
|---|
| 1 |
| user output |
|---|
| 0 |
Test 2
Verdict: WRONG ANSWER
| input |
|---|
| 2 |
| correct output |
|---|
| 1 2 2 1 |
| user output |
|---|
| 1 |
Test 3
Verdict: WRONG ANSWER
| input |
|---|
| 5 |
| correct output |
|---|
| 1 2 3 4 5 2 1 4 3 6 3 4 1 2 7 4 3 2 1 8 5 6 7 8 1 |
| user output |
|---|
| 10 |
Test 4
Verdict: WRONG ANSWER
| input |
|---|
| 42 |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 861 |
Test 5
Verdict: WRONG ANSWER
| input |
|---|
| 99 |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 4851 |
Test 6
Verdict: WRONG ANSWER
| input |
|---|
| 100 |
| correct output |
|---|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 ... |
| user output |
|---|
| 4950 |
