QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#870976 | #4049. 预处理器 | liuziao | 100 ✓ | 2ms | 3712kb | C++23 | 2.2kb | 2025-01-25 18:54:06 | 2025-01-25 18:54:09 |
Judging History
answer
#include <bits/stdc++.h>
// #define int int64_t
const int kMaxN = 105;
int n;
std::map<std::string, std::string> mp;
std::map<std::string, bool> vis;
void work1(std::string s) {
std::string str[3] = {"", "", ""};
int cnt = 0;
for (auto c : s) {
if (cnt <= 1 && c == ' ') ++cnt;
else str[cnt] = str[cnt] + c;
}
mp[str[1]] = str[2];
}
void work2(std::string s) {
std::string str[3] = {"", "", ""};
int cnt = 0;
for (auto c : s) {
if (cnt <= 1 && c == ' ') ++cnt;
else if (c != '\n' && c != '\r') str[cnt] = str[cnt] + c;
}
mp.erase(str[1]);
}
std::string _getstr(std::string s) {
if (!s.size()) return "";
if (s.size() > 1000) return s;
std::string res = "", now = "";
auto lst = vis;
for (auto c : s) {
if (isdigit(c) || isalpha(c)) {
now = now + c;
} else {
if (mp.count(now) && !vis.count(now)) {
vis[now] = 1;
res = res + _getstr(mp[now]);
vis = lst;
} else {
res = res + now;
}
res = res + c;
now = "";
}
}
if (now.size()) {
if (mp.count(now) && !vis.count(now)) {
vis[now] = 1;
res = res + _getstr(mp[now]);
vis = lst;
} else {
res = res + now;
}
}
vis = lst;
auto rres = res;
return rres;
}
void getstr(std::string s) {
std::string now = "";
bool fl = 0;
for (auto c : s) {
if (isdigit(c) || isalpha(c)) now = now + c;
else std::cout << _getstr(now) << c, now = "";
fl |= (c == '\n');
}
if (now.size() >= 1) std::cout << _getstr(now);
if (!fl) std::cout << '\n';
}
void dickdreamer() {
std::cin >> n; getchar();
for (int i = 1; i <= n; ++i) {
std::string s;
getline(std::cin, s);
if (s.size() >= 2 && s[0] == '#') {
if (s[1] == 'd') work1(s);
else work2(s);
std::cout << '\n';
} else {
getstr(s);
}
}
}
int32_t main() {
#ifdef ORZXKR
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
int T = 1;
// std::cin >> T;
while (T--) dickdreamer();
// std::cerr << 1.0 * clock() / CLOCKS_PER_SEC << "s\n";
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Pretests
Final Tests
Test #1:
score: 10
Accepted
time: 0ms
memory: 3712kb
input:
1 printf("Hello, world!\n");
output:
printf("Hello, world!\n");
result:
ok single line: 'printf("Hello, world!\n");'
Test #2:
score: 10
Accepted
time: 0ms
memory: 3712kb
input:
5 #define PI 3.14159 #define E 2.71828 std::cout << PI * r * r << std::endl; std::cout << log10(x) / log10(E) << std::endl; std::cout << "E^(PI * i) + 1 = 0" << std::endl;
output:
std::cout << 3.14159 * r * r << std::endl; std::cout << log10(x) / log10(2.71828) << std::endl; std::cout << "2.71828^(3.14159 * i) + 1 = 0" << std::endl;
result:
ok 5 lines
Test #3:
score: 10
Accepted
time: 0ms
memory: 3584kb
input:
5 #define A abc #define B hij A B AB BA B A #undef A A B AB BA B A
output:
abc hij AB BA hij abc A hij AB BA hij A
result:
ok 5 lines
Test #4:
score: 10
Accepted
time: 0ms
memory: 3584kb
input:
9 #define A B B A B C C B A #define B C C A B C C B A #define C [a, b, c] A B C C B A
output:
B B B C C B B B C C C C C C C C C C C C C C [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c] [a, b, c]
result:
ok 9 lines
Test #5:
score: 10
Accepted
time: 0ms
memory: 3584kb
input:
6 #define A A+B+C #define B b+C #define C B+c A*B*C #undef B A*B*C
output:
A+b+B+c+b+C+c*b+B+c*b+C+c A+B+B+c*B*B+c
result:
ok 6 lines
Test #6:
score: 10
Accepted
time: 1ms
memory: 3584kb
input:
100 8czu(!@iNcuVcs9Zu3/a.$Fo{Fij<4.'Y}JZ:6>2%evBhvjA7IItz`85q'pJ 80"<+vdDzt`?D9L\Ryx0y2[Lu Viek6-NfJ X}= b&"Yz8kOQ{?yVq\>C85o*Y,XaEb^?;Cf?{iTg**mSZy?NtY'sD 9PWlvF3vug7v\=gw_um^1S,.rjONR'!~jLF=xrQNAx]P=Ze ; }^<pTuLfJ~y,QN{ 0&oB}2Y)f2V=o|hr3!wl@x36N2X^t&wL!CD)gR guy^??Io;%5~9a/C_`mkk0z4&t7yT\<iNAa+7y...
output:
8czu(!@iNcuVcs9Zu3/a.$Fo{Fij<4.'Y}JZ:6>2%evBhvjA7IItz`85q'pJ 80"<+vdDzt`?D9L\Ryx0y2[Lu Viek6-NfJ X}= b&"Yz8kOQ{?yVq\>C85o*Y,XaEb^?;Cf?{iTg**mSZy?NtY'sD 9PWlvF3vug7v\=gw_um^1S,.rjONR'!~jLF=xrQNAx]P=Ze ; }^<pTuLfJ~y,QN{ 0&oB}2Y)f2V=o|hr3!wl@x36N2X^t&wL!CD)gR guy^??Io;%5~9a/C_`mkk0z4&t7yT\<iNAa+7y(ZOa...
result:
ok 100 lines
Test #7:
score: 10
Accepted
time: 2ms
memory: 3712kb
input:
100 #define a ?!*(\@{$.!(;!'?<(=^ V X o i C I H p M A e L O F P x z h b T K s l t u Q E G m d R D c q J w N y f g U n j r v B S k W a #define b >'[&-~?<@`](!+*(}{+ h g S l A T r N O M C k a w U G H s m E t n v f u e d K b y c W Q o x V B L R I J p i q j D X z F P #define c }{);'|{*?>&\<];!+!| X h c ...
output:
V X o i C I H p M A e L O F P x z h b T K s l t u Q E G m d R D c q J w N y f g U n j r v B S k W ?!*(\@{$.!(;!'?<(=^ h g S l A T r N O M C k ?!*(\@{$.!(;!'?<(=^ w U G H s m E t n v f u e d K >'[&-~?<@`](!+*(}{+ y c W Q o x V B L R I J p i q j D X z F P X h }{);'|{*?>&\<];!+!| z T C P Q M G ?!*(\...
result:
ok 100 lines
Test #8:
score: 10
Accepted
time: 1ms
memory: 3584kb
input:
100 #define b \)&%\<=!$(><[[./*{\ o p R a x m V i F H O X J e K d z Q C G b E M s l t u A W T I N h D c q L w P y f g U n j r v B S k #define p &-~?<@`](!+*(}{+?-| g W T N h X y w A C r s b l k a S Q K E m c t n v M R u e H O d f F G U o x z P B L V I J p i q j D #define W '|{*?>&\<];!+!|{^+" S V j ...
output:
o p R a x m V i F H O X J e K d z Q C G \)&%\<=!$(><[[./*{\ E M s l t u A W T I N h D c q L w P y f g U n j r v B S k g W T N h X y w A C r s \)&%\<=!$(><[[./*{\ l k a S Q K E m c t n v M R u e H O d f F G U o x z P B L V I J &-~?<@`](!+*(}{+?-| i q j D S V j P &-~?<@`](!+*(}{+?-| O g X R y T D C...
result:
ok 100 lines
Test #9:
score: 10
Accepted
time: 0ms
memory: 3584kb
input:
100 #define b X* E x X l q u r h J t j H P S D O d v U e C k Q w M y a z V s F K A m N G W n T b c B L f I R g i o p #define N T> p V E q b j A O N l d a z R G J C i X P I h F W B t U u v L H M n w K k x D r y g S f s o Q c e T m #define P X& K U y Q g A V l b D E e w s k H a r P S M C N m c t n v O...
output:
E x X l q u r h J t j H P S D O d v U e C k Q w M y a z V s F K A m N G W n T X* c B L f I R g i o p p V E q X* j A O T> l d a z R G J C i X P I h F W B t U u v L H M n w K k x D r y g S f s o Q c e T m K U y Q g A V l X* D E e w s k H a r X& S M C T> m c t n v O T u j h d f F G W o x z R B L X I...
result:
ok 100 lines
Test #10:
score: 10
Accepted
time: 0ms
memory: 3584kb
input:
100 #define b V* E x X l q u r h J t j H P S D O d v U e C k Q w M y a z V s F K A m N G W n T b c B L f I R g i o p #define N x> p V E q b j A O N l d a z R G J C i X P I h F W B t U u v L H M n w K k x D r y g S f s o Q c e T m #define P D& K U y Q g A V l b D E e w s k H a r P S M C N m c t n v O...
output:
E x X l q u r h J t j H P S D O d v U e C k Q w M y a z V s F K A m N G W n T V* c B L f I R g i o p p V E q V* j A O x> l d a z R G J C i X P I h F W B t U u v L H M n w K k x D r y g S f s o Q c e T m K U y Q g A V l V* D E e w s k H a r D& S M C x> m c t n v O T u j h d f F G W o x z R B L X I...
result:
ok 100 lines
Extra Test:
score: 0
Extra Test Passed