Submit | All submissions | Best solutions | Back to list |
CCODE - IOI03 Comparing Code |
Racine Business Networks (RBN) has taken the Heuristic Algorithm Languages (HAL) company to court, claiming that HAL has taken source code from RBN UNIXTM; and contributed it to the open-source operating system HALnix.
RBN and HAL both use a programming language with one statement per line, each of the form: STOREA = STOREB + STOREC where STOREA, STOREB, and STOREC are variable names. In particular, the first variable name starts in the first column and is followed by a space, an equals sign, a space, a second variable name, a space, the addition symbol, a space, and a third variable name. The same variable name might appear more than one time on a single line. Variable names consist of 1...8 uppercase ASCII letters ('A'...'Z')
RBN claims that HAL copied a consecutive sequence of lines directly from RBN's source code, making only minor modifications:
- RBN claims that HAL changed some of the variable names in order to disguise their crime. That is, HAL took a series of lines from RBN's program and, for each variable in it, changed all occurrences of that variable to a new variable name, although the new variable name might be the same as the original. Of course, no two variables were changed to the same new variable name.
- RBN also claims HAL might have changed the order of the right-hand side of some lines: STOREA = STOREB + STOREC might have been changed to STOREA = STOREC + STOREB.
- RBN claims that HAL did not change the order of the lines of RBN's source code. Given source code for programs from RBN and HAL, find the longest consecutive sequence of lines from HAL's program that could have come from a consecutive sequence of lines from RBN's program using the modifications above. Note that the sequences of lines from the two programs do not have to start at the same line number in both files.
Input:
- The first line of input contains two space-separated integers, R and H (1 ≤ R ≤ 1000; 1 ≤ H ≤ 1000). R is the number of lines of source code in RBN's program; H is the number of lines of source code in HAL's program.
- The next R lines contain RBN's program.
- The next H lines contain HAL's program.
Example input: 4 3 RA = RB + RC RC = D + RE RF = RF + RJ RE = RF + RF HD = HE + HF HM = HN + D HN = HA + HB
Output:
The output should contain a single line with a single integer that is the length of the longest consecutive sequence of lines that HAL might have copied from RBN and transformed.
Example output: 2
Lines 1-2 of RBN's program are the same as lines 2-3 of HAL's program, if the following variable name substitutions are performed on RBN's program: RA → HM, RB → D, RC → HN, D → HA, RE → HB. There is no matching with three or more lines.
SCORING
You will receive full points on each test case for which your program produces a correct output file. No partial credit will be given on any test case.
Added by: | Jimmy |
Date: | 2008-12-18 |
Time limit: | 2s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | |
Resource: | IOI 2003 - USA |