// UVa 11988 - Broken Keyboard (a.k.a. Beiju Text) #include <stdio.h> using namespace std; struct node { char x; node *next; }; char line[100009]; node* empty() { node* n = new node; n->x = 0; n->next = NULL; return n; } void print(node* n) { while (n->next != NULL) { if (n->x != 0) printf("%c", n->x); n = n->next; } } int main() { while (fgets(line, sizeof(line), stdin) != NULL) { node* leftBegin = empty(); node* leftEnd = leftBegin; node* rightBegin = empty(); node* rightEnd = rightBegin; for (int i = 0; line[i] != 0; i++) { if (line[i] == '[') { //right = left + right; //left = ""; leftEnd->next = rightBegin; rightBegin = leftBegin; leftBegin = empty(); leftEnd = leftBegin; } else if (line[i] == ']') { //left = left + right; //right = ""; leftEnd->next = rightBegin; leftEnd = rightEnd; rightBegin = empty(); rightEnd = rightBegin; } else { node* n = new node; n->x = line[i]; n->next = NULL; leftEnd->next = n; leftEnd = n; } } print(leftBegin); print(rightBegin); printf("\n"); } return 0; }
Friday, April 24, 2015
UVa 11988 - Broken Keyboard (a.k.a. Beiju Text)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment