Table
SRM 157 · 2003-07-28 · by Yarin
Problem Statement
A table is a common structure used in HTML when doing the layout of a home page. A table without any merged cells simply contains rows*columns basic cells (see figure 1 below). It's often desirable to merge several basic cells, either horizontally, vertically, or both, in which case the table may look like the one in figure 2. A merged cell will always be of rectangular shape, so the table in figure 3 is not a valid table.
Each cell in the table is described with a 3-tuple in the format (colspan,rowspan,content) where colspan and rowspan are integers between 1 and 9, inclusive, representing the width and height of the cell (in basic cell units) and content is an upper case letter ('A'-'Z').
The table will be described as a
Thus this table will be described like this:
{"(1,1,A)(2,1,B)(1,1,C)(1,1,D)",
"(1,1,E)(1,1,F)(1,1,G)(1,1,H)(1,1,I)",
"(1,3,J)(1,1,K)(3,2,L)",
"(1,1,M)",
"(1,1,N)(1,1,O)(1,1,P)(1,1,Q)",
"(1,1,R)(1,1,S)(1,1,T)(1,1,U)(1,1,V)"}
The desired output is the same table but in matrix form. That is, each basic cell should occupy one character in a
Create a class Table containing the method layout which takes a
Notes
- It's possible that a row might be empty, see example 1.
- If you are using a plugin and you don't see the pictures, you may want to read the problem statement in the applet.
Constraints
- tbl will contain between 1 and 50 elements, inclusive.
- Each element in tbl will contain between 0 and 50 characters, inclusive.
- Each element in tbl will contain zero or more tuples in the format above, with no extra characters.
- tbl will describe a valid table with no cells missing or overlapping.
- The return value will contain between 1 and 50 elements, inclusive, and each element will contain between 1 and 50 characters, inclusive.
{"(1,1,A)(2,1,B)(1,1,C)(1,1,D)",
"(1,1,E)(1,1,F)(1,1,G)(1,1,H)(1,1,I)",
"(1,3,J)(1,1,K)(3,2,L)",
"(1,1,M)",
"(1,1,N)(1,1,O)(1,1,P)(1,1,Q)",
"(1,1,R)(1,1,S)(1,1,T)(1,1,U)(1,1,V)"}
Returns: { "ABBCD", "EFGHI", "JKLLL", "JMLLL", "JNOPQ", "RSTUV" }
This is the example in the problem text: ABBCD EFGHI JKLLL JMLLL JNOPQ RSTUV
{"(1,3,N)(3,2,E)(3,1,M)(1,1,Q)",
"(1,1,T)(3,1,U)",
"(1,1,Y)(4,5,A)(1,2,V)(1,2,W)",
"(1,3,G)(1,3,Z)",
"(1,2,S)(1,3,D)",
"",
"(1,2,P)(1,2,F)(1,3,J)",
"(1,1,L)(3,3,K)(1,1,R)",
"(3,2,B)(1,1,D)",
"(2,1,A)",
"(2,3,O)(4,1,X)(1,1,I)(1,1,B)",
"(3,2,H)(3,2,C)",
""}
Returns: { "NEEEMMMQ", "NEEETUUU", "NYAAAAVW", "GZAAAAVW", "GZAAAASD", "GZAAAASD", "PFAAAAJD", "PFLKKKJR", "BBBKKKJD", "BBBKKKAA", "OOXXXXIB", "OOHHHCCC", "OOHHHCCC" }
Note the two empty rows!
{"(3,5,Q)(6,1,Q)(5,1,L)(1,4,M)","(7,9,N)(4,2,A)","","(1,2,A)(2,3,S)(1,1,S)","(2,7,B)","(3,2,A)(1,1,X)","(2,1,Y)(1,1,S)","(3,1,Q)(3,4,Z)","(1,1,Q)(1,9,K)(1,1,Q)","(1,4,S)(1,1,K)","(2,2,A)(1,3,W)(1,8,Q)(1,3,Q)(1,1,Q)(2,1,Z)","(8,3,I)","(1,2,W)(1,1,W)","(1,2,M)(2,4,I)(1,5,S)","(1,1,D)(2,6,C)(6,3,I)","(1,2,K)(1,3,K)","","(2,4,T)(1,1,K)(1,1,W)(1,1,S)(2,2,D)(2,1,O)(1,5,N)","(3,1,S)(2,1,W)(1,1,W)(1,2,N)(1,2,O)","(5,1,I)(1,3,N)(2,2,J)","(3,2,R)(4,1,U)(2,1,T)","(1,1,U)(1,1,R)(4,1,R)(2,1,L)(1,1,N)(1,1,V)"}
Returns: { "QQQQQQQQQLLLLLM", "QQQNNNNNNNAAAAM", "QQQNNNNNNNAAAAM", "QQQNNNNNNNASSSM", "QQQNNNNNNNASSBB", "AAANNNNNNNXSSBB", "AAANNNNNNNYYSBB", "QQQNNNNNNNZZZBB", "QKQNNNNNNNZZZBB", "SKKNNNNNNNZZZBB", "SKAAWQQQZZZZZBB", "SKAAWQQIIIIIIII", "SKWWWQQIIIIIIII", "MKWIIQSIIIIIIII", "MKDIIQSCCIIIIII", "KKKIIQSCCIIIIII", "KKKIIQSCCIIIIII", "TTKKWQSCCSDDOON", "TTSSSWWCCWDDNON", "TTIIIIICCNJJNON", "TTRRRUUUUNJJTTN", "URRRRRRRRNLLNVN" }
{"(5,9,O)(2,3,P)(3,8,Y)(2,1,D)(1,1,C)","(3,8,T)","","(2,1,A)","(2,2,G)","","(2,8,F)","","(1,6,F)(1,1,G)(1,1,Y)","(5,5,S)(5,5,P)","","","","","(1,2,C)(1,5,E)(1,1,E)(7,9,X)(2,4,P)(1,9,A)","(1,9,R)","(1,1,J)","(1,1,O)","(1,2,M)(1,5,K)(1,5,R)","(1,1,M)","(1,8,Y)(1,1,Y)","(1,9,N)","","(1,1,R)(2,1,C)(1,3,X)(1,3,A)(2,3,E)(2,4,X)(1,5,G)","(1,2,N)(2,2,K)(1,2,U)","","(7,4,T)(1,1,E)","(1,7,B)(2,3,Y)","(1,5,T)(1,5,M)","","(3,3,T)(2,3,D)(1,3,X)(2,3,B)(2,5,X)","","","(9,4,A)(1,2,S)","(1,2,X)","(3,2,J)","(1,1,D)"}
Returns: { "OOOOOPPYYYDDC", "OOOOOPPYYYTTT", "OOOOOPPYYYTTT", "OOOOOAAYYYTTT", "OOOOOGGYYYTTT", "OOOOOGGYYYTTT", "OOOOOFFYYYTTT", "OOOOOFFYYYTTT", "OOOOOFFFGYTTT", "SSSSSFFFPPPPP", "SSSSSFFFPPPPP", "SSSSSFFFPPPPP", "SSSSSFFFPPPPP", "SSSSSFFFPPPPP", "CEEXXXXXXXPPA", "CERXXXXXXXPPA", "JERXXXXXXXPPA", "OERXXXXXXXPPA", "MERXXXXXXXKRA", "MMRXXXXXXXKRA", "YYRXXXXXXXKRA", "YNRXXXXXXXKRA", "YNRXXXXXXXKRA", "YNRRCCXAEEXXG", "YNNKKUXAEEXXG", "YNNKKUXAEEXXG", "YNTTTTTTTEXXG", "YNTTTTTTTBYYG", "TNTTTTTTTBYYM", "TNTTTTTTTBYYM", "TTTTDDXBBBXXM", "TTTTDDXBBBXXM", "TTTTDDXBBBXXM", "AAAAAAAAABXXS", "AAAAAAAAAXXXS", "AAAAAAAAAXJJJ", "AAAAAAAAADJJJ" }
{"(9,2,W)(3,3,N)","","(2,8,X)(1,1,X)(5,7,C)(1,1,C)","(1,2,P)(1,7,E)(1,8,P)(1,3,P)(1,3,N)","","(1,5,L)","(1,1,H)(1,4,O)","(1,1,Z)","(1,2,H)","(5,1,P)","(9,9,K)(1,5,T)(1,9,V)","(1,1,M)","(1,6,N)","","","(1,3,M)","","","(2,2,J)","(7,2,U)(2,2,A)(1,1,J)","(2,1,S)(1,1,C)","(2,1,J)(2,1,F)(8,1,B)"}
Returns: { "WWWWWWWWWNNN", "WWWWWWWWWNNN", "XXXCCCCCCNNN", "XXPCCCCCEPPN", "XXPCCCCCEPPN", "XXLCCCCCEPPN", "XXLCCCCCEPHO", "XXLCCCCCEPZO", "XXLCCCCCEPHO", "XXLPPPPPEPHO", "KKKKKKKKKPTV", "KKKKKKKKKMTV", "KKKKKKKKKNTV", "KKKKKKKKKNTV", "KKKKKKKKKNTV", "KKKKKKKKKNMV", "KKKKKKKKKNMV", "KKKKKKKKKNMV", "KKKKKKKKKJJV", "UUUUUUUAAJJJ", "UUUUUUUAASSC", "JJFFBBBBBBBB" }
Submissions are judged against all 38 archived test cases, of which 5 are shown here. Case numbers match the judge’s.
Language: C++17 · define a public class Table with a public method vector<string> layout(vector<string> tbl) · 38 test cases · 2 s / 256 MB per case