Submission #34755826


Source Code Expand

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cassert>
#include <iostream>
#include <sstream>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <utility>
#include <numeric>
#include <algorithm>
#include <bitset>
#include <complex>
#include <array>
#include <list>
#include <stack>
#include <valarray>

using namespace std;

typedef unsigned uint;
typedef long long Int;
typedef unsigned long long UInt;

const int INF = 1001001001;
const Int INFLL = 1001001001001001001LL;

template <typename T>
void pv(T a, T b)
{
  for (T i = a; i != b; ++i)
    cout << *i << " ";
  cout << endl;
}
template <typename T>
void chmin(T &a, T b)
{
  if (a > b)
    a = b;
}
template <typename T>
void chmax(T &a, T b)
{
  if (a < b)
    a = b;
}
int in()
{
  int x;
  scanf("%d", &x);
  return x;
}
double fin()
{
  double x;
  scanf("%lf", &x);
  return x;
}
Int lin()
{
  Int x;
  scanf("%lld", &x);
  return x;
}

const int MAX = 16 * 100050;
int link[MAX][27], nodes = 1;
int ac[MAX];

void add(string s)
{
  int p = 0;
  for (int i = 0; i < (int)s.length(); ++i)
  {
    const int c = s[i] == '_' ? 26 : s[i] - 'a';
    if (link[p][c] == -1)
    {
      link[p][c] = nodes++;
      ac[nodes - 1] = 0;
    }
    p = link[p][c];
  }
  ac[p] = 1;
}

bool match(string s)
{
  int p = 0;
  for (int i = 0; i < (int)s.size(); ++i)
  {
    const int c = s[i] == '_' ? 26 : s[i] - 'a';
    p = link[p][c];
    if (p == -1)
      return false;
  }
  return ac[p] == 1;
}

vector<string> S;

void search(int u, string s)
{
  if (s.length() >= 3 && u == (1 << (int)S.size()) - 1 && !match(s))
  {
    cout << s << endl;
    exit(0);
  }
  for (int i = 0; i < (int)S.size(); ++i)
  {
    if (u & (1 << i))
    {
      continue;
    }
    int us = u == 0 ? 0 : 1;
    while (s.length() + us + S[i].length() <= 16)
    {
      string ss = s + string(us, '_') + S[i];
      search(u | (1 << i), ss);
      if (u == 0)
        break;
      ++us;
    }
  }
}

int main()
{
  for (int i = 0; i < MAX; ++i)
  {
    fill(link[i], link[i] + 27, -1);
  }
  int N = in();
  int M = in();
  S.resize(N);
  for (int i = 0; i < N; ++i)
  {
    cin >> S[i];
  }
  for (int i = 0; i < M; ++i)
  {
    string t;
    cin >> t;
    add(t);
  }
  search(0, "");
  cout << -1 << endl;
  return 0;
}

Submission Info

Submission Time
Task D - Unique Username
User japlj
Language C++ (GCC 9.2.1)
Score 400
Code Size 2467 Byte
Status AC
Exec Time 702 ms
Memory 175128 KiB

Compile Error

./Main.cpp: In function ‘int in()’:
./Main.cpp:53:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   53 |   scanf("%d", &x);
      |   ~~~~~^~~~~~~~~~
./Main.cpp: In function ‘double fin()’:
./Main.cpp:59:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   59 |   scanf("%lf", &x);
      |   ~~~~~^~~~~~~~~~~
./Main.cpp: In function ‘Int lin()’:
./Main.cpp:65:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   65 |   scanf("%lld", &x);
      |   ~~~~~^~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 4
AC × 37
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_one_00.txt, 01_one_01.txt, 01_one_02.txt, 01_one_03.txt, 01_one_04.txt, 01_one_05.txt, 02_case_00.txt, 02_case_01.txt, 02_case_02.txt, 02_case_03.txt, 02_case_04.txt, 02_case_05.txt, 02_case_06.txt, 02_case_07.txt, 02_case_08.txt, 02_case_09.txt, 02_case_10.txt, 02_case_11.txt, 02_case_12.txt, 02_case_13.txt, 02_case_14.txt, 02_case_15.txt, 02_case_16.txt, 02_case_17.txt, 03_eight_00.txt, 03_eight_01.txt, 03_eight_02.txt, 03_eight_03.txt, 03_eight_04.txt, 03_eight_05.txt, 04_corner_00.txt, 04_corner_01.txt, 04_corner_02.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 119 ms 172512 KiB
00_sample_01.txt AC 116 ms 172492 KiB
00_sample_02.txt AC 115 ms 172480 KiB
00_sample_03.txt AC 120 ms 172464 KiB
01_one_00.txt AC 116 ms 172452 KiB
01_one_01.txt AC 118 ms 172516 KiB
01_one_02.txt AC 117 ms 172448 KiB
01_one_03.txt AC 117 ms 172512 KiB
01_one_04.txt AC 118 ms 172504 KiB
01_one_05.txt AC 118 ms 172376 KiB
02_case_00.txt AC 157 ms 174976 KiB
02_case_01.txt AC 160 ms 175108 KiB
02_case_02.txt AC 161 ms 175116 KiB
02_case_03.txt AC 161 ms 175076 KiB
02_case_04.txt AC 164 ms 175108 KiB
02_case_05.txt AC 160 ms 175128 KiB
02_case_06.txt AC 163 ms 174904 KiB
02_case_07.txt AC 162 ms 174984 KiB
02_case_08.txt AC 160 ms 175060 KiB
02_case_09.txt AC 190 ms 174392 KiB
02_case_10.txt AC 163 ms 175000 KiB
02_case_11.txt AC 161 ms 175116 KiB
02_case_12.txt AC 193 ms 173888 KiB
02_case_13.txt AC 181 ms 174680 KiB
02_case_14.txt AC 161 ms 174988 KiB
02_case_15.txt AC 202 ms 174408 KiB
02_case_16.txt AC 197 ms 174068 KiB
02_case_17.txt AC 191 ms 175080 KiB
03_eight_00.txt AC 189 ms 174564 KiB
03_eight_01.txt AC 189 ms 174632 KiB
03_eight_02.txt AC 190 ms 174488 KiB
03_eight_03.txt AC 649 ms 174848 KiB
03_eight_04.txt AC 702 ms 174820 KiB
03_eight_05.txt AC 517 ms 174732 KiB
04_corner_00.txt AC 118 ms 172480 KiB
04_corner_01.txt AC 117 ms 172448 KiB
04_corner_02.txt AC 120 ms 172492 KiB