QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#605884 | #9288. Roman Palindromes | lym# | WA | 10ms | 11820kb | C++20 | 4.8kb | 2024-10-02 20:24:11 | 2024-10-02 20:24:11 |
Judging History
answer
#include<bits/stdc++.h>
using i64 = long long;
void solve() {
int n;
std::cin >> n;
std::string s;
std::cin >> s;
std::vector<std::string > ans;
std::vector<int> num(n + 1);
for (int i = 0; i < n; i ++) {
/*
if (i + 2 < n) {
if (s[i] == 'M' && s[i + 1] == 'C' && s[i + 2] == 'M') {
ans.push_back("MCM");
i += 2;
continue;
}
if (s[i] == 'C' && s[i + 1] == 'X' && s[i + 2] == 'C') {
ans.push_back("CXC");
i += 2;
continue;
}
if (s[i] == 'X' && s[i + 1] == 'I' && s[i + 2] == 'X') {
ans.push_back("XIX");
i += 2;
continue;
}
}*/
if (s[i] == 'M') {
int j = i;
std::string t = "";
while (j < n && j - i < 3 && s[j] == 'M') {
t += 'M';
num[j] = ans.size() + 1;
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'C') {
int j = i;
std::string t = "";
while (j < n && j - i < 3 && s[j] == 'C') {
t += 'C';
num[j] = ans.size() + 1;
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'D') {
num[i] = ans.size() + 1;
ans.push_back("D");
} else if (s[i] == 'X') {
int j = i;
std::string t = "";
while (j < n && j - i < 3 && s[j] == 'X') {
t += 'X';
num[j] = ans.size() + 1;
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'L') {
num[i] = ans.size() + 1;
ans.push_back("L");
} else if (s[i] == 'I') {
int j = i;
std::string t = "";
while (j < n && j - i < 3 && s[j] == 'I') {
t += 'I';
num[j] = ans.size() + 1;
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'V') {
num[i] = ans.size() + 1;
ans.push_back("V");
}
}/*
std::cout << ans.size() << '\n';
for (auto it : ans) {
std::cout << it << '\n';
}*/
// for (int i = 0; i < n; i ++) {
// std::cout << num[i] << ' ';
// }
// std::cout << '\n';
std::vector<int> pre(n + 1);
std::vector<std::string> th(n + 1);
for (int i = 0; i < 2; i ++) {
pre[i] = i - 1;
}
for (int i = 2; i < n; i ++) {
pre[i] = i - 1;
if (num[i] > num[i - 1] + 1) {
num[i] = num[i - 1] + 1;
}
if (s[i - 2] == 'M' && s[i - 1] == 'C' && s[i] == 'M') {
int op = i - 3 < 0 ? 0 : num[i - 3];
if (op + 1 < num[i]) {
num[i] = op + 1;
pre[i] = i - 3;
}
th[i] = "MCM";
}
if (s[i - 2] == 'C' && s[i - 1] == 'X' && s[i] == 'C') {
int op = i - 3 < 0 ? 0 : num[i - 3];
if (op + 1 < num[i]) {
num[i] = op + 1;
pre[i] = i - 3;
}
th[i] = "CXC";
}
if (s[i - 2] == 'X' && s[i - 1] == 'I' && s[i] == 'X') {
int op = i - 3 < 0 ? 0 : num[i - 3];
if (op + 1 < num[i]) {
num[i] = op + 1;
pre[i] = i - 3;
}
th[i] = "XIX";
}
}
// for (int i = 0; i < n; i ++) {
// std::cout << num[i] << ' ';
// }
// std::cout << '\n';
// std::cout << num[n - 1] << '\n';
int now = n - 1;
std::set<int> op;
while (now != -1) {
if (th[now] != "") {
op.insert(now);
}
now = pre[now];
}
op.insert(n - 1);
int fr = 0;
ans.clear();
// for (auto it : op) {
// std::cout << it << ' ';
// }
// std::cout << '\n';
int br = -1;
for (auto it : op) {
int u = it;
if (th[it] != "" && it - br >= 3) u = it - 3;
for (; fr <= u; fr ++) {
int i = fr;
if (s[i] == 'M') {
int j = i;
std::string t = "";
while (j <= u && j - i < 3 && s[j] == 'M') {
t += 'M';
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'C') {
int j = i;
std::string t = "";
while (j <= u && j - i < 3 && s[j] == 'C') {
t += 'C';
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'D') {
ans.push_back("D");
} else if (s[i] == 'X') {
int j = i;
std::string t = "";
while (j <= u && j - i < 3 && s[j] == 'X') {
t += 'X';
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'L') {
ans.push_back("L");
} else if (s[i] == 'I') {
int j = i;
std::string t = "";
while (j <= u && j - i < 3 && s[j] == 'I') {
t += 'I';
j ++;
}
i = j - 1;
ans.push_back(t);
} else if (s[i] == 'V') {
ans.push_back("V");
}
fr = i;
}
if (th[it] != "" && it - br >= 3) {
ans.push_back(th[it]);
}
fr = it + 1;
br = it;
}
std::cout << ans.size() << '\n';
for (auto it : ans) {
std::cout << it << '\n';
}
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int t = 1;
//std::cin >> t;
while (t --) {
solve();
}
return 0;
}
/*
12
MMMCMMCXCXIX
10
MMCMCMCMCM
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3556kb
input:
5 MMXXI
output:
3 MM XX I
result:
ok OK!
Test #2:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
1 I
output:
1 I
result:
ok OK!
Test #3:
score: 0
Accepted
time: 0ms
memory: 3628kb
input:
1 V
output:
1 V
result:
ok OK!
Test #4:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
1 X
output:
1 X
result:
ok OK!
Test #5:
score: 0
Accepted
time: 0ms
memory: 3600kb
input:
1 L
output:
1 L
result:
ok OK!
Test #6:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
1 C
output:
1 C
result:
ok OK!
Test #7:
score: 0
Accepted
time: 0ms
memory: 3592kb
input:
1 D
output:
1 D
result:
ok OK!
Test #8:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
1 M
output:
1 M
result:
ok OK!
Test #9:
score: 0
Accepted
time: 0ms
memory: 3864kb
input:
2 XX
output:
1 XX
result:
ok OK!
Test #10:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
2 LL
output:
2 L L
result:
ok OK!
Test #11:
score: 0
Accepted
time: 0ms
memory: 3508kb
input:
3 XXX
output:
1 XXX
result:
ok OK!
Test #12:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
3 VVV
output:
3 V V V
result:
ok OK!
Test #13:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
4 MMMM
output:
2 MMM M
result:
ok OK!
Test #14:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
4 DDDD
output:
4 D D D D
result:
ok OK!
Test #15:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
5 CCCCC
output:
2 CCC CC
result:
ok OK!
Test #16:
score: 0
Accepted
time: 0ms
memory: 3856kb
input:
5 DDDDD
output:
5 D D D D D
result:
ok OK!
Test #17:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
6 IIIIII
output:
2 III III
result:
ok OK!
Test #18:
score: 0
Accepted
time: 0ms
memory: 3600kb
input:
6 VVVVVV
output:
6 V V V V V V
result:
ok OK!
Test #19:
score: 0
Accepted
time: 0ms
memory: 3568kb
input:
3 XIX
output:
1 XIX
result:
ok OK!
Test #20:
score: 0
Accepted
time: 0ms
memory: 3860kb
input:
5 XIXIX
output:
3 XIX I X
result:
ok OK!
Test #21:
score: 0
Accepted
time: 10ms
memory: 11820kb
input:
99999 MCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMC...
output:
49999 MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C ...
result:
ok OK!
Test #22:
score: 0
Accepted
time: 9ms
memory: 11668kb
input:
100000 LMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMC...
output:
50000 L MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM C MCM ...
result:
ok OK!
Test #23:
score: 0
Accepted
time: 5ms
memory: 8236kb
input:
100000 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...
output:
33334 III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III III II...
result:
ok OK!
Test #24:
score: 0
Accepted
time: 7ms
memory: 10396kb
input:
100000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...
output:
100000 D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D...
result:
ok OK!
Test #25:
score: 0
Accepted
time: 4ms
memory: 8340kb
input:
99999 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
output:
33333 CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CC...
result:
ok OK!
Test #26:
score: 0
Accepted
time: 0ms
memory: 8320kb
input:
99998 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
output:
33333 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX...
result:
ok OK!
Test #27:
score: 0
Accepted
time: 0ms
memory: 8364kb
input:
99997 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...
output:
33333 CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CC...
result:
ok OK!
Test #28:
score: 0
Accepted
time: 3ms
memory: 6260kb
input:
58475 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
output:
19492 XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XX...
result:
ok OK!
Test #29:
score: 0
Accepted
time: 1ms
memory: 3932kb
input:
6696 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...
output:
6696 D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D...
result:
ok OK!
Test #30:
score: 0
Accepted
time: 0ms
memory: 3504kb
input:
15 LLMXILIDXXXIXXD
output:
12 L L M X I L I D XX XIX X D
result:
ok OK!
Test #31:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
15 VVIIDILXXIXXXCI
output:
11 V V II D I L X XIX XX C I
result:
ok OK!
Test #32:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
15 LMMCMMMMXLCLCCC
output:
9 L M MCM MMM X L C L CCC
result:
ok OK!
Test #33:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
15 CCCXCCDLDDMVCXI
output:
12 CC CXC C D L D D M V C X I
result:
ok OK!
Test #34:
score: 0
Accepted
time: 0ms
memory: 3824kb
input:
15 XXXIXXXVVLDXLXL
output:
11 XX XIX XX V V L D X L X L
result:
ok OK!
Test #35:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
15 IMICVDCXXXIXXXX
output:
10 I M I C V D C XX XIX XXX
result:
ok OK!
Test #36:
score: 0
Accepted
time: 0ms
memory: 3664kb
input:
15 CIMMXMCVMMMMCMM
output:
10 C I MM X M C V MMM MCM M
result:
ok OK!
Test #37:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
15 VDCCCCXCCCCLDVM
output:
9 V D CCC CXC CCC L D V M
result:
ok OK!
Test #38:
score: 0
Accepted
time: 0ms
memory: 3504kb
input:
15 CCCCXCCCCIDCDVX
output:
9 CCC CXC CCC I D C D V X
result:
ok OK!
Test #39:
score: 0
Accepted
time: 0ms
memory: 3612kb
input:
15 DXVCCCXCXCCLDDX
output:
11 D X V CCC X CXC C L D D X
result:
ok OK!
Test #40:
score: 0
Accepted
time: 0ms
memory: 3868kb
input:
15 LIIMXXIXIXXXCLX
output:
10 L II M XX I XIX XX C L X
result:
ok OK!
Test #41:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
15 CDLXVMMCMCMMMMD
output:
10 C D L X V MM C MCM MMM D
result:
ok OK!
Test #42:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
15 XXXIXIXXVMLDVMX
output:
11 XXX I XIX X V M L D V M X
result:
ok OK!
Test #43:
score: 0
Accepted
time: 0ms
memory: 3824kb
input:
15 MVDIXIMMMCMCMMM
output:
10 M V D I X I MMM C MCM MM
result:
ok OK!
Test #44:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
15 CCCXCXCCCCMCDCC
output:
8 CCC X CXC CCC M C D CC
result:
ok OK!
Test #45:
score: -100
Wrong Answer
time: 0ms
memory: 3560kb
input:
15 VLVDDMCCCCXCXCC
output:
11 V L V D D M CCC CXC X C C
result:
wrong answer Jury is better: 10 vs 11