Submission #1149611
Source Code Expand
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
#define REP(i,n) for(int i=0; i<(int)(n); i++)
#define FOR(i,b,e) for(int i=(b); i<=(int)(e); i++)
const int K_MAX = 9;
const int N_MAX = 50;
const int V_MAX = 10;
const int W_MAX = 27;
const int S_MAX = 3;
int K, N;
char v[N_MAX][V_MAX + 1];
char w[N_MAX][W_MAX + 1];
// each digit in v
int d[N_MAX][V_MAX];
// length of s[i]
int ln[K_MAX + 1];
// s[i] : string corresponds to 1-K
char s[K_MAX + 1][S_MAX + 1];
void init() {
REP(i, N) REP(j, strlen(v[i])) d[i][j] = v[i][j] - '0';
fill(ln, ln + K + 1, 1);
}
bool next() {
for (int j = K; j > 0; j--) {
if (ln[j] < S_MAX) {
ln[j]++;
return true;
}
ln[j] = 1;
}
return false;
}
void solve() {
init();
bool found = false;
while (true) {
memset(s, '\0', sizeof(s));
bool ok1 = true;
// FOR(i, 1, K) printf("%d%c", ln[i], i == K ? '\n' : ' ');
REP(i, N) {
int lf = 0;
int lt = strlen(w[i]);
bool ok2 = true;
for (int j = 0; d[i][j] > 0; j++) {
int e = d[i][j];
int ld = ln[e];
if (lf + ld > lt) {
// printf("(1) : %s %d + %d > %d\n", w[i], lf, ld, lt);
ok2 = false;
break;
}
if (s[e][0]) {
if (memcmp(s[e], w[i] + lf, ld) != 0) {
// printf("(2) : %s[%d, %d] != %d:%s\n", w[i], lf, ld, e, s[e]);
ok2 = false;
break;
}
} else {
memcpy(s[e], w[i] + lf, ld);
// printf("(3) : %d:%s <- %s[%d, %d]\n", e, s[e], w[i], lf, ld);
}
lf += ld;
}
if (!ok2) {
ok1 = false;
break;
}
if (lf != lt) {
// printf("(4) : %s : %d != %d\n", w[i], lf, lt);
ok1 = false;
break;
}
}
if (ok1) {
found = true;
break;
}
if (!next()) break;
}
if (found) {
FOR(i, 1, K) printf("%s\n", s[i]);
}
}
void input() {
scanf("%d%d", &K, &N);
REP(i, N) scanf("%s%s", v + i, w + i);
}
int main() {
input();
solve();
return 0;
}
Submission Info
Submission Time
2017-03-07 10:55:51+0900
Task
D - 語呂合わせ
User
nejiko96
Language
C++14 (GCC 5.4.1)
Score
100
Code Size
2112 Byte
Status
AC
Exec Time
2 ms
Memory
128 KB
Compile Error
./Main.cpp: In function ‘void input()’:
./Main.cpp:100:39: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘char (*)[11]’ [-Wformat=]
REP(i, N) scanf("%s%s", v + i, w + i);
^
./Main.cpp:100:39: warning: format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘char (*)[28]’ [-Wformat=]
./Main.cpp:99:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &K, &N);
^
./Main.cpp:100:40: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
REP(i, N) scanf("%s%s", v + i, w + i);
^
Judge Result
Set Name
Sample
Subtask1
Subtask2
Score / Max Score
0 / 0
40 / 40
60 / 60
Status
Set Name
Test Cases
Sample
sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt
Subtask1
sample-02.txt, sample-03.txt, sample-04.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt
Subtask2
sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt
Case Name
Status
Exec Time
Memory
sample-01.txt
AC
1 ms
128 KB
sample-02.txt
AC
1 ms
128 KB
sample-03.txt
AC
1 ms
128 KB
sample-04.txt
AC
0 ms
128 KB
subtask1-01.txt
AC
1 ms
128 KB
subtask1-02.txt
AC
1 ms
128 KB
subtask1-03.txt
AC
1 ms
128 KB
subtask1-04.txt
AC
1 ms
128 KB
subtask1-05.txt
AC
1 ms
128 KB
subtask1-06.txt
AC
1 ms
128 KB
subtask1-07.txt
AC
1 ms
128 KB
subtask1-08.txt
AC
1 ms
128 KB
subtask1-09.txt
AC
1 ms
128 KB
subtask1-10.txt
AC
1 ms
128 KB
subtask1-11.txt
AC
1 ms
128 KB
subtask1-12.txt
AC
1 ms
128 KB
subtask1-13.txt
AC
1 ms
128 KB
subtask1-14.txt
AC
1 ms
128 KB
subtask1-15.txt
AC
1 ms
128 KB
subtask1-16.txt
AC
1 ms
128 KB
subtask1-17.txt
AC
1 ms
128 KB
subtask1-18.txt
AC
1 ms
128 KB
subtask1-19.txt
AC
1 ms
128 KB
subtask1-20.txt
AC
1 ms
128 KB
subtask2-01.txt
AC
1 ms
128 KB
subtask2-02.txt
AC
1 ms
128 KB
subtask2-03.txt
AC
1 ms
128 KB
subtask2-04.txt
AC
1 ms
128 KB
subtask2-05.txt
AC
1 ms
128 KB
subtask2-06.txt
AC
1 ms
128 KB
subtask2-07.txt
AC
1 ms
128 KB
subtask2-08.txt
AC
1 ms
128 KB
subtask2-09.txt
AC
2 ms
128 KB
subtask2-10.txt
AC
1 ms
128 KB
subtask2-11.txt
AC
1 ms
128 KB
subtask2-12.txt
AC
1 ms
128 KB
subtask2-13.txt
AC
1 ms
128 KB
subtask2-14.txt
AC
1 ms
128 KB
subtask2-15.txt
AC
1 ms
128 KB
subtask2-16.txt
AC
1 ms
128 KB
subtask2-17.txt
AC
1 ms
128 KB
subtask2-18.txt
AC
1 ms
128 KB
subtask2-19.txt
AC
1 ms
128 KB
subtask2-20.txt
AC
1 ms
128 KB