QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#290568#4049. 预处理器MoRanSky100 ✓2ms4320kbC++232.4kb2023-12-25 05:53:312023-12-25 05:53:32

Judging History

你现在查看的是最新测评结果

  • [2023-12-25 05:53:32]
  • 评测
  • 测评结果:100
  • 用时:2ms
  • 内存:4320kb
  • [2023-12-25 05:53:31]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
typedef pair<int, int> PII;

#define mp make_pair
#define pb push_back
#define fi first
#define se second

template <typename T> void inline read(T &x) {
	x = 0; int f = 1; char s = getchar();
	while (s < '0' || s > '9') { if (s == '-') { f = -1;} s = getchar(); }
	while (s >= '0' && s <= '9') x = x * 10 + (s ^ 48), s = getchar();
	x *= f;
}

template <typename T> bool inline chkMin(T &x, T y) { return y < x ? x = y, 1 : 0; }
template <typename T> bool inline chkMax(T &x, T y) { return y > x ? x = y, 1 : 0; }

const int N = 10005;


map<string, int> ID;

string loc[N];

vector<int> fs[N];

int ys[N];

bool vis[N];

int idx = 0;

int inline id(string s) {
	if (ID.count(s)) return ID[s];
	loc[++idx] = s;
	ID[s] = idx;
	return idx;
}

int n;

string s;


bool inline chk(char c) {
	if (c == '_' || (c <= 'Z' && c >= 'A') || (c <= 'z' && c >= 'a') || (c <= '9' && c >= '0')) return 1;
	return 0;
}


void inline bd(int u) {
	string now = "";
	for (char c: loc[u]) {
		if (chk(c)) now += c;
		else {
			if (now.size()) fs[u].pb(id(now));
			fs[u].pb(-(int)c);
			now = "";
			//putchar(c);
		}
	}
	if (now.size()) fs[u].pb(id(now));
}

void inline rmk(string a, string b) {
	int p = id(a), q = id(b);
	ys[p] = q;
}

void inline dw(string a) {
	int p = id(a);
	ys[p] = 0;
}

void inline ex(int u);

void inline out(string o) {
	string now = "";
	for (char c: o) {
		if (chk(c)) now += c;
		else {
			if (now.size()) ex(id(now));
			now = "";
			putchar(c);
		}
	}
	if (now.size()) ex(id(now));
}

void inline ex(int u) {
	if (vis[u] || !ys[u]) {
		cout << loc[u];
		return;
	}
	vis[u] = 1;
	int v = ys[u];
	if (!fs[v].size()) bd(v);
	for (int v: fs[v]) {
		if (v >= 0) ex(v);
		else putchar(-v);
	}
	vis[u] = 0;
}

int main() {

	cin >> n; getline(cin, s);
	while (n--) {
		getline(cin, s);
		if (s[0] == '#') {
			if (s[1] == 'd') {
				int p = -1;
				for (int i = 8; i < s.size(); i++)
					if (s[i] == ' ') {
						p = i;
						break;
					}
				string name = s.substr(8, p - 8);
				string content = s.substr(p + 1, s.size() - (p + 1));
			//	cout << name << "->>" << content << endl;
			//	M[name] = content;
				rmk(name, content);
			} else {
				string name = s.substr(7, s.size() - 7);
				dw(name);
			}
			puts("");
		} else {
			out(s);
			puts("");
		}
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 10
Accepted
time: 1ms
memory: 4276kb

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: 1ms
memory: 4320kb

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: 1ms
memory: 4320kb

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: 1ms
memory: 4316kb

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: 1ms
memory: 4152kb

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: 4260kb

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: 0ms
memory: 4116kb

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: 4120kb

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: 1ms
memory: 4060kb

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: 1ms
memory: 4140kb

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