QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#644459 | #4049. 预处理器 | _CLY_ | 100 ✓ | 3ms | 3820kb | C++17 | 1.5kb | 2024-10-16 14:03:18 | 2024-10-16 14:03:19 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N=205;
int n;
string s;
map<string,string> mp;
bool pd(char c){
if((c>='A'&&c<='Z')||(c>='a'&&c<='z')||(c>='0'&&c<='9')||c=='_') return 1;
return 0;
}
string get(string s,int &st,bool f){
string t="";
int ls=s.size();
while(st<ls&&(pd(s[st])||f)) t=t+s[st],st++;
return t;
}
void ins(){
int st=0,ls=s.size();
while(s[st]!=' ') st++; st++;
string t=get(s,st,0); st++;
string t2=get(s,st,1);
// cout<<t<<" -> "<<t2<<'\n';
mp[t]=t2;
}
void del(){
int st=0,ls=s.size();
while(s[st]!=' ') st++; st++;
string t=get(s,st,0);
// cout<<t<<"!\n";
mp[t]="";
}
map<string,int> bz;
void dfs(string t){
string tt="";
int st=0,lt=t.size();
while(st<lt){
if(pd(t[st])) tt=tt+t[st];
else{
if(!bz[tt]&&mp[tt]!=""){
bz[tt]=1;
dfs(mp[tt]);
bz[tt]=0;
}
else cout<<tt;
cout<<t[st];
tt="";
}
st++;
}
if(!bz[tt]&&mp[tt]!=""){
bz[tt]=1;
dfs(mp[tt]);
bz[tt]=0;
}
else cout<<tt;
}
void print(string t){
bz.clear();
string ts="";
int lt=t.size();
for(int i=0;i<lt;i++){
if(pd(t[i])) ts=ts+t[i];
else{
dfs(ts);
cout<<t[i];
ts="";
}
}
dfs(ts);
puts("");
}
int main(){
// freopen("4.in","r",stdin);
// freopen("t1.out","w",stdout);
scanf("%d ",&n);
while(n--){
getline(cin,s);
if(s[0]=='#'){
if(s[1]=='d') ins();
else del();
puts("");
continue;
}
print(s);
}
return 0;
}
詳細信息
Pretests
Final Tests
Test #1:
score: 10
Accepted
time: 1ms
memory: 3676kb
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: 3688kb
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: 3656kb
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: 3684kb
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: 3688kb
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: 2ms
memory: 3820kb
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: 3ms
memory: 3764kb
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: 2ms
memory: 3708kb
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: 2ms
memory: 3764kb
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: 2ms
memory: 3764kb
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