0000: 23 69 6e 63 6c 75 64 65 20 3c 69 6f 73 74 72 65 #include <iostre
0010: 61 6d 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 73 am>..#include <s
0020: 73 74 72 65 61 6d 3e 0d 0a 23 69 6e 63 6c 75 64 stream>..#includ
0030: 65 20 3c 69 6f 6d 61 6e 69 70 3e 0d 0a 23 69 6e e <iomanip>..#in
0040: 63 6c 75 64 65 20 3c 76 65 63 74 6f 72 3e 0d 0a clude <vector>..
0050: 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 #include <string
0060: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 6d 61 70 >..#include <map
0070: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 73 65 74 >..#include <set
0080: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 61 6c 67 >..#include <alg
0090: 6f 72 69 74 68 6d 3e 0d 0a 23 69 6e 63 6c 75 64 orithm>..#includ
00a0: 65 20 3c 6e 75 6d 65 72 69 63 3e 0d 0a 23 69 6e e <numeric>..#in
00b0: 63 6c 75 64 65 20 3c 69 74 65 72 61 74 6f 72 3e clude <iterator>
00c0: 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 66 75 6e 63 ..#include <func
00d0: 74 69 6f 6e 61 6c 3e 0d 0a 23 69 6e 63 6c 75 64 tional>..#includ
00e0: 65 20 3c 63 6f 6d 70 6c 65 78 3e 0d 0a 23 69 6e e <complex>..#in
00f0: 63 6c 75 64 65 20 3c 71 75 65 75 65 3e 0d 0a 23 clude <queue>..#
0100: 69 6e 63 6c 75 64 65 20 3c 73 74 61 63 6b 3e 0d include <stack>.
0110: 0a 23 69 6e 63 6c 75 64 65 20 3c 63 6d 61 74 68 .#include <cmath
0120: 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 3c 63 61 73 >..#include <cas
0130: 73 65 72 74 3e 0d 0a 23 69 6e 63 6c 75 64 65 20 sert>..#include
0140: 3c 63 73 74 72 69 6e 67 3e 0d 0a 75 73 69 6e 67 <cstring>..using
0150: 20 6e 61 6d 65 73 70 61 63 65 20 73 74 64 3b 0d namespace std;.
0160: 0a 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f .typedef long lo
0170: 6e 67 20 4c 4c 3b 0d 0a 74 79 70 65 64 65 66 20 ng LL;..typedef
0180: 63 6f 6d 70 6c 65 78 3c 64 6f 75 62 6c 65 3e 20 complex<double>
0190: 43 4d 50 3b 0d 0a 0d 0a 63 6c 61 73 73 20 43 73 CMP;....class Cs
01a0: 73 52 75 6c 65 73 20 7b 20 70 75 62 6c 69 63 3a sRules { public:
01b0: 0d 0a 09 69 6e 74 20 67 65 74 4d 69 6e 69 6d 61 ...int getMinima
01c0: 6c 43 73 73 52 75 6c 65 43 6f 75 6e 74 28 76 65 lCssRuleCount(ve
01d0: 63 74 6f 72 20 3c 73 74 72 69 6e 67 3e 20 78 74 ctor <string> xt
01e0: 68 6d 6c 29 20 0d 0a 09 7b 0d 0a 09 09 74 72 65 hml) ...{....tre
01f0: 65 20 76 69 72 74 75 61 6c 5f 72 6f 6f 74 3b 0d e virtual_root;.
0200: 0a 09 09 7b 0d 0a 09 09 09 6e 75 6d 5f 6e 6f 64 ...{.....num_nod
0210: 65 20 3d 20 30 3b 0d 0a 09 09 09 73 74 72 69 6e e = 0;.....strin
0220: 67 20 78 73 20 3d 20 61 63 63 75 6d 75 6c 61 74 g xs = accumulat
0230: 65 28 78 74 68 6d 6c 2e 62 65 67 69 6e 28 29 2c e(xthml.begin(),
0240: 20 78 74 68 6d 6c 2e 65 6e 64 28 29 2c 20 73 74 xthml.end(), st
0250: 72 69 6e 67 28 22 22 29 29 3b 0d 0a 09 09 09 63 ring(""));.....c
0260: 6f 6e 73 74 20 63 68 61 72 2a 20 70 20 3d 20 78 onst char* p = x
0270: 73 2e 63 5f 73 74 72 28 29 3b 0d 0a 09 09 09 76 s.c_str();.....v
0280: 69 72 74 75 61 6c 5f 72 6f 6f 74 2e 63 68 69 6c irtual_root.chil
0290: 64 72 65 6e 20 3d 20 70 61 72 73 65 5f 74 61 67 dren = parse_tag
02a0: 73 28 70 29 3b 0d 0a 09 09 7d 0d 0a 09 09 76 65 s(p);....}....ve
02b0: 63 74 6f 72 3c 69 6e 74 3e 20 6d 65 6d 6f 28 6e ctor<int> memo(n
02c0: 75 6d 5f 6e 6f 64 65 2a 38 2a 38 2a 38 2c 20 2d um_node*8*8*8, -
02d0: 31 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20 72 65 1);....return re
02e0: 63 28 76 69 72 74 75 61 6c 5f 72 6f 6f 74 2e 63 c(virtual_root.c
02f0: 68 69 6c 64 72 65 6e 2c 20 37 2a 36 34 2b 37 2a hildren, 7*64+7*
0300: 38 2b 37 2c 20 6d 65 6d 6f 29 3b 0d 0a 09 7d 0d 8+7, memo);...}.
0310: 0a 0d 0a 09 73 74 72 75 63 74 20 74 72 65 65 0d ....struct tree.
0320: 0a 09 7b 0d 0a 09 09 69 6e 74 20 69 64 3b 0d 0a ..{....int id;..
0330: 09 09 69 6e 74 20 74 61 67 3b 0d 0a 09 09 69 6e ..int tag;....in
0340: 74 20 63 6f 6c 6f 72 3b 0d 0a 09 09 76 65 63 74 t color;....vect
0350: 6f 72 3c 74 72 65 65 2a 3e 20 63 68 69 6c 64 72 or<tree*> childr
0360: 65 6e 3b 0d 0a 09 09 7e 74 72 65 65 28 29 20 7b en;....~tree() {
0370: 20 66 6f 72 28 69 6e 74 20 69 3d 30 3b 20 69 3c for(int i=0; i<
0380: 63 68 69 6c 64 72 65 6e 2e 73 69 7a 65 28 29 3b children.size();
0390: 20 2b 2b 69 29 20 64 65 6c 65 74 65 20 63 68 69 ++i) delete chi
03a0: 6c 64 72 65 6e 5b 69 5d 3b 20 7d 0d 0a 09 7d 3b ldren[i]; }...};
03b0: 0d 0a 0d 0a 09 2f 2f 20 73 6f 6c 76 65 72 20 2d .....// solver -
03c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
03f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a ------------....
0400: 09 69 6e 74 20 72 65 63 28 76 65 63 74 6f 72 3c .int rec(vector<
0410: 74 72 65 65 2a 3e 26 20 74 73 2c 20 69 6e 74 20 tree*>& ts, int
0420: 74 61 67 5f 74 6f 5f 63 6f 6c 6f 72 2c 20 76 65 tag_to_color, ve
0430: 63 74 6f 72 3c 69 6e 74 3e 26 20 6d 65 6d 6f 29 ctor<int>& memo)
0440: 0d 0a 09 7b 0d 0a 09 09 69 6e 74 20 73 75 6d 20 ...{....int sum
0450: 3d 20 30 3b 0d 0a 09 09 66 6f 72 28 69 6e 74 20 = 0;....for(int
0460: 69 3d 30 3b 20 69 3c 74 73 2e 73 69 7a 65 28 29 i=0; i<ts.size()
0470: 3b 20 2b 2b 69 29 0d 0a 09 09 09 73 75 6d 20 2b ; ++i).....sum +
0480: 3d 20 72 65 63 28 74 73 5b 69 5d 2c 20 74 61 67 = rec(ts[i], tag
0490: 5f 74 6f 5f 63 6f 6c 6f 72 2c 20 6d 65 6d 6f 29 _to_color, memo)
04a0: 3b 0d 0a 09 09 72 65 74 75 72 6e 20 73 75 6d 3b ;....return sum;
04b0: 0d 0a 09 7d 0d 0a 0d 0a 09 69 6e 74 20 72 65 63 ...}.....int rec
04c0: 28 74 72 65 65 2a 20 74 2c 20 69 6e 74 20 74 61 (tree* t, int ta
04d0: 67 5f 74 6f 5f 63 6f 6c 6f 72 2c 20 76 65 63 74 g_to_color, vect
04e0: 6f 72 3c 69 6e 74 3e 26 20 6d 65 6d 6f 29 0d 0a or<int>& memo)..
04f0: 09 7b 0d 0a 09 09 63 6f 6e 73 74 20 69 6e 74 20 .{....const int
0500: 6b 65 79 20 3d 20 74 2d 3e 69 64 20 2a 20 38 2a key = t->id * 8*
0510: 38 2a 38 20 2b 20 74 61 67 5f 74 6f 5f 63 6f 6c 8*8 + tag_to_col
0520: 6f 72 3b 0d 0a 09 09 69 66 28 20 6d 65 6d 6f 5b or;....if( memo[
0530: 6b 65 79 5d 20 3e 3d 20 30 20 29 0d 0a 09 09 09 key] >= 0 ).....
0540: 72 65 74 75 72 6e 20 6d 65 6d 6f 5b 6b 65 79 5d return memo[key]
0550: 3b 0d 0a 0d 0a 09 09 69 6e 74 20 6d 65 20 20 20 ;......int me
0560: 3d 20 28 28 74 61 67 5f 74 6f 5f 63 6f 6c 6f 72 = ((tag_to_color
0570: 3e 3e 28 33 2a 74 2d 3e 74 61 67 29 29 26 37 29 >>(3*t->tag))&7)
0580: 20 21 3d 20 74 2d 3e 63 6f 6c 6f 72 3b 0d 0a 09 != t->color;...
0590: 09 69 6e 74 20 62 65 73 74 20 3d 20 30 78 33 66 .int best = 0x3f
05a0: 66 66 66 66 66 66 3b 0d 0a 09 09 66 6f 72 28 69 ffffff;....for(i
05b0: 6e 74 20 74 74 63 3d 30 3b 20 74 74 63 3c 38 2a nt ttc=0; ttc<8*
05c0: 38 2a 38 3b 20 2b 2b 74 74 63 29 0d 0a 09 09 7b 8*8; ++ttc)....{
05d0: 0d 0a 09 09 09 69 6e 74 20 63 6f 73 74 20 3d 20 .....int cost =
05e0: 30 3b 0d 0a 09 09 09 63 6f 73 74 20 2b 3d 20 28 0;.....cost += (
05f0: 28 74 61 67 5f 74 6f 5f 63 6f 6c 6f 72 3e 3e 30 (tag_to_color>>0
0600: 29 26 37 29 20 21 3d 20 28 28 74 74 63 3e 3e 30 )&7) != ((ttc>>0
0610: 29 26 37 29 3b 0d 0a 09 09 09 63 6f 73 74 20 2b )&7);.....cost +
0620: 3d 20 28 28 74 61 67 5f 74 6f 5f 63 6f 6c 6f 72 = ((tag_to_color
0630: 3e 3e 33 29 26 37 29 20 21 3d 20 28 28 74 74 63 >>3)&7) != ((ttc
0640: 3e 3e 33 29 26 37 29 3b 0d 0a 09 09 09 63 6f 73 >>3)&7);.....cos
0650: 74 20 2b 3d 20 28 28 74 61 67 5f 74 6f 5f 63 6f t += ((tag_to_co
0660: 6c 6f 72 3e 3e 36 29 26 37 29 20 21 3d 20 28 28 lor>>6)&7) != ((
0670: 74 74 63 3e 3e 36 29 26 37 29 3b 0d 0a 09 09 09 ttc>>6)&7);.....
0680: 62 65 73 74 20 3d 20 6d 69 6e 28 62 65 73 74 2c best = min(best,
0690: 20 63 6f 73 74 20 2b 20 73 72 65 63 28 74 2d 3e cost + srec(t->
06a0: 63 68 69 6c 64 72 65 6e 2c 20 74 74 63 2c 20 6d children, ttc, m
06b0: 65 6d 6f 29 29 3b 0d 0a 09 09 7d 0d 0a 09 09 72 emo));....}....r
06c0: 65 74 75 72 6e 20 6d 65 6d 6f 5b 6b 65 79 5d 20 eturn memo[key]
06d0: 3d 20 6d 65 20 2b 20 62 65 73 74 3b 0d 0a 09 7d = me + best;...}
06e0: 0d 0a 0d 0a 09 2f 2f 20 70 61 72 73 65 72 20 2d .....// parser -
06f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0720: 2d 2d 2d 2d 2d 0d 0a 0d 0a 09 69 6e 74 20 6e 75 -----.....int nu
0730: 6d 5f 6e 6f 64 65 3b 0d 0a 0d 0a 09 76 65 63 74 m_node;.....vect
0740: 6f 72 3c 74 72 65 65 2a 3e 20 70 61 72 73 65 5f or<tree*> parse_
0750: 74 61 67 73 28 20 63 6f 6e 73 74 20 63 68 61 72 tags( const char
0760: 2a 26 20 70 20 29 0d 0a 09 7b 0d 0a 09 09 76 65 *& p )...{....ve
0770: 63 74 6f 72 3c 74 72 65 65 2a 3e 20 72 65 73 3b ctor<tree*> res;
0780: 0d 0a 09 09 77 68 69 6c 65 28 2a 70 20 26 26 20 ....while(*p &&
0790: 70 5b 31 5d 21 3d 27 2f 27 29 0d 0a 09 09 09 72 p[1]!='/').....r
07a0: 65 73 2e 70 75 73 68 5f 62 61 63 6b 28 70 61 72 es.push_back(par
07b0: 73 65 5f 74 61 67 28 70 29 29 3b 0d 0a 09 09 72 se_tag(p));....r
07c0: 65 74 75 72 6e 20 72 65 73 3b 0d 0a 09 7d 0d 0a eturn res;...}..
07d0: 0d 0a 09 74 72 65 65 2a 20 70 61 72 73 65 5f 74 ...tree* parse_t
07e0: 61 67 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 26 ag( const char*&
07f0: 20 70 20 29 0d 0a 09 7b 0d 0a 09 09 73 74 61 74 p )...{....stat
0800: 69 63 20 6d 61 70 3c 73 74 72 69 6e 67 2c 20 69 ic map<string, i
0810: 6e 74 3e 20 63 6f 6c 6f 72 5f 6d 61 70 3b 0d 0a nt> color_map;..
0820: 09 09 69 66 28 20 63 6f 6c 6f 72 5f 6d 61 70 2e ..if( color_map.
0830: 65 6d 70 74 79 28 29 20 29 0d 0a 09 09 7b 0d 0a empty() )....{..
0840: 09 09 09 63 6f 6c 6f 72 5f 6d 61 70 5b 22 62 6c ...color_map["bl
0850: 61 63 6b 22 5d 20 20 3d 20 30 3b 0d 0a 09 09 09 ack"] = 0;.....
0860: 63 6f 6c 6f 72 5f 6d 61 70 5b 22 62 6c 75 65 22 color_map["blue"
0870: 5d 20 20 20 3d 20 31 3b 0d 0a 09 09 09 63 6f 6c ] = 1;.....col
0880: 6f 72 5f 6d 61 70 5b 22 67 72 61 79 22 5d 20 20 or_map["gray"]
0890: 20 3d 20 32 3b 0d 0a 09 09 09 63 6f 6c 6f 72 5f = 2;.....color_
08a0: 6d 61 70 5b 22 67 72 65 65 6e 22 5d 20 20 3d 20 map["green"] =
08b0: 33 3b 0d 0a 09 09 09 63 6f 6c 6f 72 5f 6d 61 70 3;.....color_map
08c0: 5b 22 72 65 64 22 5d 20 20 20 20 3d 20 34 3b 0d ["red"] = 4;.
08d0: 0a 09 09 09 63 6f 6c 6f 72 5f 6d 61 70 5b 22 77 ....color_map["w
08e0: 68 69 74 65 22 5d 20 20 3d 20 35 3b 0d 0a 09 09 hite"] = 5;....
08f0: 09 63 6f 6c 6f 72 5f 6d 61 70 5b 22 79 65 6c 6c .color_map["yell
0900: 6f 77 22 5d 20 3d 20 36 3b 0d 0a 09 09 7d 0d 0a ow"] = 6;....}..
0910: 09 09 73 74 61 74 69 63 20 6d 61 70 3c 73 74 72 ..static map<str
0920: 69 6e 67 2c 20 69 6e 74 3e 20 74 61 67 5f 6d 61 ing, int> tag_ma
0930: 70 3b 0d 0a 09 09 69 66 28 20 74 61 67 5f 6d 61 p;....if( tag_ma
0940: 70 2e 65 6d 70 74 79 28 29 20 29 0d 0a 09 09 7b p.empty() )....{
0950: 0d 0a 09 09 09 74 61 67 5f 6d 61 70 5b 22 62 22 .....tag_map["b"
0960: 5d 20 3d 20 30 3b 0d 0a 09 09 09 74 61 67 5f 6d ] = 0;.....tag_m
0970: 61 70 5b 22 75 22 5d 20 3d 20 31 3b 0d 0a 09 09 ap["u"] = 1;....
0980: 09 74 61 67 5f 6d 61 70 5b 22 69 22 5d 20 3d 20 .tag_map["i"] =
0990: 32 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 2;....}......//
09a0: 3c 54 41 47 20 69 64 3d 27 49 44 27 20 73 74 79 <TAG id='ID' sty
09b0: 6c 65 3d 27 63 6f 6c 6f 72 3a 43 4f 4c 4f 52 27 le='color:COLOR'
09c0: 3e 74 61 67 43 6f 6e 74 65 6e 74 3c 2f 54 41 47 >tagContent</TAG
09d0: 3e 0d 0a 09 09 70 2b 2b 3b 20 20 20 20 20 20 20 >....p++;
09e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
09f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 3c 0d // <.
0a00: 0a 09 09 73 74 72 69 6e 67 20 74 61 67 3b 20 77 ...string tag; w
0a10: 68 69 6c 65 28 2a 70 21 3d 27 20 27 29 20 74 61 hile(*p!=' ') ta
0a20: 67 2b 3d 2a 70 2b 2b 3b 20 2f 2f 20 54 41 47 0d g+=*p++; // TAG.
0a30: 0a 09 09 77 68 69 6c 65 28 2a 70 3d 3d 27 20 27 ...while(*p==' '
0a40: 29 20 2b 2b 70 3b 20 20 20 20 20 20 20 20 20 20 ) ++p;
0a50: 20 20 20 20 20 20 20 20 20 2f 2f 20 5f 73 70 5f // _sp_
0a60: 0d 0a 09 09 70 20 2b 3d 20 34 3b 20 20 20 20 20 ....p += 4;
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0a80: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 64 3d // id=
0a90: 27 0d 0a 09 09 73 74 72 69 6e 67 20 69 64 3b 20 '....string id;
0aa0: 20 77 68 69 6c 65 28 2a 70 21 3d 27 5c 27 27 29 while(*p!='\'')
0ab0: 20 69 64 2b 3d 2a 70 2b 2b 3b 20 2f 2f 20 49 44 id+=*p++; // ID
0ac0: 0d 0a 09 09 2b 2b 70 3b 20 20 20 20 20 20 20 20 ....++p;
0ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0ae0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 27 0d 0a // '..
0af0: 09 09 77 68 69 6c 65 28 2a 70 3d 3d 27 20 27 29 ..while(*p==' ')
0b00: 20 2b 2b 70 3b 20 20 20 20 20 20 20 20 20 20 20 ++p;
0b10: 20 20 20 20 20 20 20 20 2f 2f 20 5f 73 70 5f 0d // _sp_.
0b20: 0a 09 09 70 20 2b 3d 20 31 33 3b 20 20 20 20 20 ...p += 13;
0b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0b40: 20 20 20 20 20 20 20 20 20 2f 2f 20 73 74 79 6c // styl
0b50: 65 3d 27 63 6f 6c 6f 72 3a 0d 0a 09 09 73 74 72 e='color:....str
0b60: 69 6e 67 20 63 6c 3b 20 20 77 68 69 6c 65 28 2a ing cl; while(*
0b70: 70 21 3d 27 5c 27 27 29 20 63 6c 2b 3d 2a 70 2b p!='\'') cl+=*p+
0b80: 2b 3b 20 2f 2f 20 43 4f 4c 4f 52 0d 0a 09 09 70 +; // COLOR....p
0b90: 20 2b 3d 20 32 3b 20 20 20 20 20 20 20 20 20 20 += 2;
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0bb0: 20 20 20 20 20 2f 2f 20 27 3e 0d 0a 09 09 76 65 // '>....ve
0bc0: 63 74 6f 72 3c 74 72 65 65 2a 3e 20 63 68 20 3d ctor<tree*> ch =
0bd0: 20 70 61 72 73 65 5f 74 61 67 73 28 70 29 3b 20 parse_tags(p);
0be0: 20 20 20 20 2f 2f 20 74 61 67 43 6f 6e 74 65 6e // tagConten
0bf0: 74 0d 0a 09 09 70 20 2b 3d 20 34 3b 20 20 20 20 t....p += 4;
0c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 3c 2f // </
0c20: 54 41 47 3e 0d 0a 0d 0a 09 09 74 72 65 65 2a 20 TAG>......tree*
0c30: 74 20 3d 20 6e 65 77 20 74 72 65 65 3b 0d 0a 09 t = new tree;...
0c40: 09 74 2d 3e 69 64 20 20 20 20 20 20 20 3d 20 6e .t->id = n
0c50: 75 6d 5f 6e 6f 64 65 2b 2b 3b 0d 0a 09 09 74 2d um_node++;....t-
0c60: 3e 74 61 67 20 20 20 20 20 20 3d 20 74 61 67 5f >tag = tag_
0c70: 6d 61 70 5b 74 61 67 5d 3b 0d 0a 09 09 74 2d 3e map[tag];....t->
0c80: 63 6f 6c 6f 72 20 20 20 20 3d 20 63 6f 6c 6f 72 color = color
0c90: 5f 6d 61 70 5b 63 6c 5d 3b 0d 0a 09 09 74 2d 3e _map[cl];....t->
0ca0: 63 68 69 6c 64 72 65 6e 20 3d 20 63 68 3b 0d 0a children = ch;..
0cb0: 09 09 72 65 74 75 72 6e 20 74 3b 0d 0a 09 7d 0d ..return t;...}.
0cc0: 0a 7d 3b 0d 0a 0d 0a 2f 2f 20 42 45 47 49 4e 20 .};....// BEGIN
0cd0: 43 55 54 20 48 45 52 45 0d 0a 23 69 6e 63 6c 75 CUT HERE..#inclu
0ce0: 64 65 20 3c 63 74 69 6d 65 3e 0d 0a 64 6f 75 62 de <ctime>..doub
0cf0: 6c 65 20 73 74 61 72 74 5f 74 69 6d 65 3b 20 73 le start_time; s
0d00: 74 72 69 6e 67 20 74 69 6d 65 72 28 29 0d 0a 20 tring timer()..
0d10: 7b 20 6f 73 74 72 69 6e 67 73 74 72 65 61 6d 20 { ostringstream
0d20: 6f 73 3b 20 6f 73 20 3c 3c 20 22 20 28 22 20 3c os; os << " (" <
0d30: 3c 20 69 6e 74 28 28 63 6c 6f 63 6b 28 29 2d 73 < int((clock()-s
0d40: 74 61 72 74 5f 74 69 6d 65 29 2f 43 4c 4f 43 4b tart_time)/CLOCK
0d50: 53 5f 50 45 52 5f 53 45 43 2a 31 30 30 30 29 20 S_PER_SEC*1000)
0d60: 3c 3c 20 22 20 6d 73 65 63 29 22 3b 20 72 65 74 << " msec)"; ret
0d70: 75 72 6e 20 6f 73 2e 73 74 72 28 29 3b 20 7d 0d urn os.str(); }.
0d80: 0a 74 65 6d 70 6c 61 74 65 3c 74 79 70 65 6e 61 .template<typena
0d90: 6d 65 20 54 3e 20 6f 73 74 72 65 61 6d 26 20 6f me T> ostream& o
0da0: 70 65 72 61 74 6f 72 3c 3c 28 6f 73 74 72 65 61 perator<<(ostrea
0db0: 6d 26 20 6f 73 2c 20 63 6f 6e 73 74 20 76 65 63 m& os, const vec
0dc0: 74 6f 72 3c 54 3e 26 20 76 29 0d 0a 20 7b 20 6f tor<T>& v).. { o
0dd0: 73 20 3c 3c 20 22 7b 20 22 3b 0d 0a 20 20 20 66 s << "{ ";.. f
0de0: 6f 72 28 74 79 70 65 6e 61 6d 65 20 76 65 63 74 or(typename vect
0df0: 6f 72 3c 54 3e 3a 3a 63 6f 6e 73 74 5f 69 74 65 or<T>::const_ite
0e00: 72 61 74 6f 72 20 69 74 3d 76 2e 62 65 67 69 6e rator it=v.begin
0e10: 28 29 3b 20 69 74 21 3d 76 2e 65 6e 64 28 29 3b (); it!=v.end();
0e20: 20 2b 2b 69 74 29 0d 0a 20 20 20 6f 73 20 3c 3c ++it).. os <<
0e30: 20 27 5c 22 27 20 3c 3c 20 2a 69 74 20 3c 3c 20 '\"' << *it <<
0e40: 27 5c 22 27 20 3c 3c 20 28 69 74 2b 31 3d 3d 76 '\"' << (it+1==v
0e50: 2e 65 6e 64 28 29 20 3f 20 22 22 20 3a 20 22 2c .end() ? "" : ",
0e60: 20 22 29 3b 20 6f 73 20 3c 3c 20 22 20 7d 22 3b "); os << " }";
0e70: 20 72 65 74 75 72 6e 20 6f 73 3b 20 7d 0d 0a 76 return os; }..v
0e80: 6f 69 64 20 76 65 72 69 66 79 5f 63 61 73 65 28 oid verify_case(
0e90: 63 6f 6e 73 74 20 69 6e 74 26 20 45 78 70 65 63 const int& Expec
0ea0: 74 65 64 2c 20 63 6f 6e 73 74 20 69 6e 74 26 20 ted, const int&
0eb0: 52 65 63 65 69 76 65 64 29 20 7b 0d 0a 20 62 6f Received) {.. bo
0ec0: 6f 6c 20 6f 6b 20 3d 20 28 45 78 70 65 63 74 65 ol ok = (Expecte
0ed0: 64 20 3d 3d 20 52 65 63 65 69 76 65 64 29 3b 0d d == Received);.
0ee0: 0a 20 69 66 28 6f 6b 29 20 63 65 72 72 20 3c 3c . if(ok) cerr <<
0ef0: 20 22 50 41 53 53 45 44 22 20 3c 3c 20 74 69 6d "PASSED" << tim
0f00: 65 72 28 29 20 3c 3c 20 65 6e 64 6c 3b 20 20 65 er() << endl; e
0f10: 6c 73 65 20 7b 20 63 65 72 72 20 3c 3c 20 22 46 lse { cerr << "F
0f20: 41 49 4c 45 44 22 20 3c 3c 20 74 69 6d 65 72 28 AILED" << timer(
0f30: 29 20 3c 3c 20 65 6e 64 6c 3b 0d 0a 20 63 65 72 ) << endl;.. cer
0f40: 72 20 3c 3c 20 22 5c 74 6f 3a 20 5c 22 22 20 3c r << "\to: \"" <
0f50: 3c 20 45 78 70 65 63 74 65 64 20 3c 3c 20 27 5c < Expected << '\
0f60: 22 27 20 3c 3c 20 65 6e 64 6c 20 3c 3c 20 22 5c "' << endl << "\
0f70: 74 78 3a 20 5c 22 22 20 3c 3c 20 52 65 63 65 69 tx: \"" << Recei
0f80: 76 65 64 20 3c 3c 20 27 5c 22 27 20 3c 3c 20 65 ved << '\"' << e
0f90: 6e 64 6c 3b 20 7d 20 7d 0d 0a 23 64 65 66 69 6e ndl; } }..#defin
0fa0: 65 20 43 41 53 45 28 4e 29 20 7b 63 65 72 72 20 e CASE(N) {cerr
0fb0: 3c 3c 20 22 54 65 73 74 20 43 61 73 65 20 23 22 << "Test Case #"
0fc0: 20 3c 3c 20 4e 20 3c 3c 20 22 2e 2e 2e 22 20 3c << N << "..." <
0fd0: 3c 20 66 6c 75 73 68 3b 20 73 74 61 72 74 5f 74 < flush; start_t
0fe0: 69 6d 65 3d 63 6c 6f 63 6b 28 29 3b 0d 0a 23 64 ime=clock();..#d
0ff0: 65 66 69 6e 65 20 45 4e 44 09 20 76 65 72 69 66 efine END. verif
1000: 79 5f 63 61 73 65 28 5f 2c 20 43 73 73 52 75 6c y_case(_, CssRul
1010: 65 73 28 29 2e 67 65 74 4d 69 6e 69 6d 61 6c 43 es().getMinimalC
1020: 73 73 52 75 6c 65 43 6f 75 6e 74 28 78 74 68 6d ssRuleCount(xthm
1030: 6c 29 29 3b 7d 0d 0a 69 6e 74 20 6d 61 69 6e 28 l));}..int main(
1040: 29 7b 0d 0a 0d 0a 43 41 53 45 28 36 29 0d 0a 09 ){....CASE(6)...
1050: 73 74 72 69 6e 67 20 78 74 68 6d 6c 5f 5b 5d 20 string xthml_[]
1060: 3d 20 7b 22 3c 69 20 69 64 3d 27 62 27 20 73 74 = {"<i id='b' st
1070: 79 6c 65 3d 27 63 6f 6c 6f 72 3a 77 68 69 74 65 yle='color:white
1080: 27 3e 3c 75 20 69 64 3d 27 66 27 20 73 74 79 6c '><u id='f' styl
1090: 22 2c 20 22 65 3d 27 63 6f 6c 6f 72 3a 72 65 64 ", "e='color:red
10a0: 27 3e 3c 2f 75 3e 3c 75 20 69 64 3d 27 65 27 20 '></u><u id='e'
10b0: 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 64 style='color:red
10c0: 22 2c 20 22 27 3e 3c 2f 75 3e 3c 75 20 69 64 3d ", "'></u><u id=
10d0: 27 64 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 'd' style='color
10e0: 3a 67 72 61 79 27 3e 3c 2f 75 3e 3c 69 20 69 64 :gray'></u><i id
10f0: 22 2c 20 22 3d 27 63 27 20 73 74 79 6c 65 3d 27 ", "='c' style='
1100: 63 6f 6c 6f 72 3a 77 68 69 74 65 27 3e 3c 2f 69 color:white'></i
1110: 3e 3c 2f 69 3e 3c 69 20 69 64 3d 27 61 27 20 73 ></i><i id='a' s
1120: 22 2c 20 22 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a ", "tyle='color:
1130: 72 65 64 27 3e 3c 2f 69 3e 22 7d 3b 0d 0a 09 20 red'></i>"};...
1140: 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67 3e vector <string>
1150: 20 78 74 68 6d 6c 28 78 74 68 6d 6c 5f 2c 20 78 xthml(xthml_, x
1160: 74 68 6d 6c 5f 2b 73 69 7a 65 6f 66 28 78 74 68 thml_+sizeof(xth
1170: 6d 6c 5f 29 2f 73 69 7a 65 6f 66 28 2a 78 74 68 ml_)/sizeof(*xth
1180: 6d 6c 5f 29 29 3b 20 0d 0a 09 69 6e 74 20 5f 20 ml_)); ...int _
1190: 3d 20 35 3b 20 0d 0a 45 4e 44 0d 0a 43 41 53 45 = 5; ..END..CASE
11a0: 28 30 29 0d 0a 09 73 74 72 69 6e 67 20 78 74 68 (0)...string xth
11b0: 6d 6c 5f 5b 5d 20 3d 20 7b 22 3c 62 20 69 64 3d ml_[] = {"<b id=
11c0: 27 78 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 'x' style='color
11d0: 3a 72 65 64 27 3e 3c 2f 62 3e 22 7d 3b 0d 0a 09 :red'></b>"};...
11e0: 20 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67 vector <string
11f0: 3e 20 78 74 68 6d 6c 28 78 74 68 6d 6c 5f 2c 20 > xthml(xthml_,
1200: 78 74 68 6d 6c 5f 2b 73 69 7a 65 6f 66 28 78 74 xthml_+sizeof(xt
1210: 68 6d 6c 5f 29 2f 73 69 7a 65 6f 66 28 2a 78 74 hml_)/sizeof(*xt
1220: 68 6d 6c 5f 29 29 3b 20 0d 0a 09 69 6e 74 20 5f hml_)); ...int _
1230: 20 3d 20 31 3b 20 0d 0a 45 4e 44 0d 0a 43 41 53 = 1; ..END..CAS
1240: 45 28 31 29 0d 0a 09 73 74 72 69 6e 67 20 78 74 E(1)...string xt
1250: 68 6d 6c 5f 5b 5d 20 3d 20 7b 22 3c 62 20 69 64 hml_[] = {"<b id
1260: 3d 27 78 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f ='x' style='colo
1270: 72 3a 72 65 64 27 3e 22 2c 22 3c 62 20 69 64 3d r:red'>","<b id=
1280: 27 79 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 'y' style='color
1290: 3a 72 65 64 27 3e 22 2c 0d 0a 20 22 3c 62 20 69 :red'>",.. "<b i
12a0: 64 3d 27 7a 27 20 73 74 79 6c 65 3d 27 63 6f 6c d='z' style='col
12b0: 6f 72 3a 72 65 64 27 3e 22 2c 22 3c 2f 62 3e 3c or:red'>","</b><
12c0: 2f 62 3e 3c 2f 62 3e 22 7d 0d 0a 3b 0d 0a 09 20 /b></b>"}..;...
12d0: 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67 3e vector <string>
12e0: 20 78 74 68 6d 6c 28 78 74 68 6d 6c 5f 2c 20 78 xthml(xthml_, x
12f0: 74 68 6d 6c 5f 2b 73 69 7a 65 6f 66 28 78 74 68 thml_+sizeof(xth
1300: 6d 6c 5f 29 2f 73 69 7a 65 6f 66 28 2a 78 74 68 ml_)/sizeof(*xth
1310: 6d 6c 5f 29 29 3b 20 0d 0a 09 69 6e 74 20 5f 20 ml_)); ...int _
1320: 3d 20 32 3b 20 0d 0a 45 4e 44 0d 0a 43 41 53 45 = 2; ..END..CASE
1330: 28 32 29 0d 0a 09 73 74 72 69 6e 67 20 78 74 68 (2)...string xth
1340: 6d 6c 5f 5b 5d 20 3d 20 7b 22 3c 62 20 69 64 3d ml_[] = {"<b id=
1350: 27 78 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 'x' style='color
1360: 3a 72 65 64 27 3e 22 2c 0d 0a 22 3c 62 20 69 64 :red'>",.."<b id
1370: 3d 27 79 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f ='y' style='colo
1380: 72 3a 72 65 64 27 3e 22 2c 0d 0a 22 3c 62 20 69 r:red'>",.."<b i
1390: 64 3d 27 77 27 20 73 74 79 6c 65 3d 27 63 6f 6c d='w' style='col
13a0: 6f 72 3a 72 65 64 27 3e 22 2c 0d 0a 22 3c 2f 62 or:red'>",.."</b
13b0: 3e 22 2c 0d 0a 22 3c 2f 62 3e 22 2c 0d 0a 22 3c >",.."</b>",.."<
13c0: 75 20 69 64 3d 27 7a 27 20 73 74 79 6c 65 3d 27 u id='z' style='
13d0: 63 6f 6c 6f 72 3a 72 65 64 27 3e 22 2c 0d 0a 22 color:red'>",.."
13e0: 3c 2f 75 3e 22 2c 0d 0a 22 3c 2f 62 3e 22 7d 3b </u>",.."</b>"};
13f0: 0d 0a 09 20 20 76 65 63 74 6f 72 20 3c 73 74 72 ... vector <str
1400: 69 6e 67 3e 20 78 74 68 6d 6c 28 78 74 68 6d 6c ing> xthml(xthml
1410: 5f 2c 20 78 74 68 6d 6c 5f 2b 73 69 7a 65 6f 66 _, xthml_+sizeof
1420: 28 78 74 68 6d 6c 5f 29 2f 73 69 7a 65 6f 66 28 (xthml_)/sizeof(
1430: 2a 78 74 68 6d 6c 5f 29 29 3b 20 0d 0a 09 69 6e *xthml_)); ...in
1440: 74 20 5f 20 3d 20 33 3b 20 0d 0a 45 4e 44 0d 0a t _ = 3; ..END..
1450: 43 41 53 45 28 33 29 0d 0a 09 73 74 72 69 6e 67 CASE(3)...string
1460: 20 78 74 68 6d 6c 5f 5b 5d 20 3d 20 7b 22 3c 62 xthml_[] = {"<b
1470: 20 69 64 3d 27 78 27 20 73 74 79 6c 65 3d 27 63 id='x' style='c
1480: 6f 6c 6f 72 3a 72 65 64 27 3e 22 2c 0d 0a 22 3c olor:red'>",.."<
1490: 69 20 69 64 3d 27 79 27 20 73 74 79 6c 65 3d 27 i id='y' style='
14a0: 63 6f 6c 6f 72 3a 62 6c 61 63 6b 27 3e 22 2c 0d color:black'>",.
14b0: 0a 22 3c 75 20 69 64 3d 27 77 27 20 73 74 79 6c ."<u id='w' styl
14c0: 65 3d 27 63 6f 6c 6f 72 3a 77 68 69 74 65 27 3e e='color:white'>
14d0: 22 2c 0d 0a 22 3c 2f 75 3e 22 2c 0d 0a 22 3c 2f ",.."</u>",.."</
14e0: 69 3e 22 2c 0d 0a 22 3c 75 20 69 64 3d 27 7a 27 i>",.."<u id='z'
14f0: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 79 65 style='color:ye
1500: 6c 6c 6f 77 27 3e 22 2c 0d 0a 22 3c 2f 75 3e 22 llow'>",.."</u>"
1510: 2c 0d 0a 22 3c 2f 62 3e 22 7d 3b 0d 0a 09 20 20 ,.."</b>"};...
1520: 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67 3e 20 vector <string>
1530: 78 74 68 6d 6c 28 78 74 68 6d 6c 5f 2c 20 78 74 xthml(xthml_, xt
1540: 68 6d 6c 5f 2b 73 69 7a 65 6f 66 28 78 74 68 6d hml_+sizeof(xthm
1550: 6c 5f 29 2f 73 69 7a 65 6f 66 28 2a 78 74 68 6d l_)/sizeof(*xthm
1560: 6c 5f 29 29 3b 20 0d 0a 09 69 6e 74 20 5f 20 3d l_)); ...int _ =
1570: 20 34 3b 20 0d 0a 45 4e 44 0d 0a 43 41 53 45 28 4; ..END..CASE(
1580: 34 29 0d 0a 09 73 74 72 69 6e 67 20 78 74 68 6d 4)...string xthm
1590: 6c 5f 5b 5d 20 3d 20 7b 22 3c 62 20 69 64 3d 27 l_[] = {"<b id='
15a0: 78 27 20 73 74 79 6c 65 3d 27 63 6f 6c 22 2c 20 x' style='col",
15b0: 22 6f 72 3a 72 65 64 27 3e 3c 2f 62 3e 22 2c 20 "or:red'></b>",
15c0: 22 3c 62 20 69 64 3d 22 2c 20 22 27 78 78 27 20 "<b id=", "'xx'
15d0: 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 22 2c 20 22 style='color", "
15e0: 3a 72 65 64 27 3e 3c 2f 62 3e 22 7d 3b 0d 0a 09 :red'></b>"};...
15f0: 20 20 76 65 63 74 6f 72 20 3c 73 74 72 69 6e 67 vector <string
1600: 3e 20 78 74 68 6d 6c 28 78 74 68 6d 6c 5f 2c 20 > xthml(xthml_,
1610: 78 74 68 6d 6c 5f 2b 73 69 7a 65 6f 66 28 78 74 xthml_+sizeof(xt
1620: 68 6d 6c 5f 29 2f 73 69 7a 65 6f 66 28 2a 78 74 hml_)/sizeof(*xt
1630: 68 6d 6c 5f 29 29 3b 20 0d 0a 09 69 6e 74 20 5f hml_)); ...int _
1640: 20 3d 20 32 3b 20 0d 0a 45 4e 44 0d 0a 43 41 53 = 2; ..END..CAS
1650: 45 28 35 29 0d 0a 09 73 74 72 69 6e 67 20 78 74 E(5)...string xt
1660: 68 6d 6c 5f 5b 5d 20 3d 20 7b 0d 0a 22 3c 62 20 hml_[] = {.."<b
1670: 69 64 3d 27 61 61 27 20 73 74 79 6c 65 3d 27 63 id='aa' style='c
1680: 6f 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d olor:red'><b id=
1690: 27 61 62 27 20 73 74 79 6c 65 3d 27 63 6f 6c 22 'ab' style='col"
16a0: 2c 0d 0a 22 6f 72 3a 72 65 64 27 3e 3c 62 20 69 ,.."or:red'><b i
16b0: 64 3d 27 61 63 27 20 73 74 79 6c 65 3d 27 63 6f d='ac' style='co
16c0: 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 lor:red'><b id='
16d0: 61 64 27 20 73 74 22 2c 0d 0a 22 79 6c 65 3d 27 ad' st",.."yle='
16e0: 63 6f 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 color:red'><b id
16f0: 3d 27 61 65 27 20 73 74 79 6c 65 3d 27 63 6f 6c ='ae' style='col
1700: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 22 2c 0d or:red'><b id",.
1710: 0a 22 3d 27 61 66 27 20 73 74 79 6c 65 3d 27 63 ."='af' style='c
1720: 6f 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d olor:red'><b id=
1730: 27 61 67 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 'ag' style='colo
1740: 72 3a 72 65 22 2c 0d 0a 22 64 27 3e 3c 62 20 69 r:re",.."d'><b i
1750: 64 3d 27 61 68 27 20 73 74 79 6c 65 3d 27 63 6f d='ah' style='co
1760: 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 lor:red'><b id='
1770: 61 69 27 20 73 74 79 6c 65 3d 27 22 2c 0d 0a 22 ai' style='",.."
1780: 63 6f 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 color:red'><b id
1790: 3d 27 61 6a 27 20 73 74 79 6c 65 3d 27 63 6f 6c ='aj' style='col
17a0: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 61 or:red'><b id='a
17b0: 6b 27 22 2c 0d 0a 22 20 73 74 79 6c 65 3d 27 63 k'",.." style='c
17c0: 6f 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d olor:red'><b id=
17d0: 27 61 6c 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 'al' style='colo
17e0: 72 3a 72 65 64 27 3e 3c 62 22 2c 0d 0a 22 20 69 r:red'><b",.." i
17f0: 64 3d 27 61 6d 27 20 73 74 79 6c 65 3d 27 63 6f d='am' style='co
1800: 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 lor:red'><b id='
1810: 61 6e 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 an' style='color
1820: 22 2c 0d 0a 22 3a 72 65 64 27 3e 3c 62 20 69 64 ",..":red'><b id
1830: 3d 27 61 6f 27 20 73 74 79 6c 65 3d 27 63 6f 6c ='ao' style='col
1840: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 61 or:red'><b id='a
1850: 70 27 20 73 74 79 6c 22 2c 0d 0a 22 65 3d 27 63 p' styl",.."e='c
1860: 6f 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d olor:red'><b id=
1870: 27 61 71 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 'aq' style='colo
1880: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 22 2c r:red'><b id='",
1890: 0d 0a 22 61 72 27 20 73 74 79 6c 65 3d 27 63 6f .."ar' style='co
18a0: 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 lor:red'><b id='
18b0: 61 73 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 as' style='color
18c0: 3a 72 65 64 27 22 2c 0d 0a 22 3e 3c 62 20 69 64 :red'",.."><b id
18d0: 3d 27 61 74 27 20 73 74 79 6c 65 3d 27 63 6f 6c ='at' style='col
18e0: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 61 or:red'><b id='a
18f0: 75 27 20 73 74 79 6c 65 3d 27 63 6f 22 2c 0d 0a u' style='co",..
1900: 22 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d "lor:red'><b id=
1910: 27 61 76 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 'av' style='colo
1920: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 61 77 r:red'><b id='aw
1930: 27 20 73 22 2c 0d 0a 22 74 79 6c 65 3d 27 63 6f ' s",.."tyle='co
1940: 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 lor:red'><b id='
1950: 61 78 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 ax' style='color
1960: 3a 72 65 64 27 3e 3c 62 20 69 22 2c 0d 0a 22 64 :red'><b i",.."d
1970: 3d 27 61 79 27 20 73 74 79 6c 65 3d 27 63 6f 6c ='ay' style='col
1980: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 61 or:red'><b id='a
1990: 7a 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a z' style='color:
19a0: 72 22 2c 0d 0a 22 65 64 27 3e 3c 62 20 69 64 3d r",.."ed'><b id=
19b0: 27 62 61 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 'ba' style='colo
19c0: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 62 r:red'><b id='bb
19d0: 27 20 73 74 79 6c 65 3d 22 2c 0d 0a 22 27 63 6f ' style=",.."'co
19e0: 6c 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 lor:red'><b id='
19f0: 62 63 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 bc' style='color
1a00: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 64 22 :red'><b id='bd"
1a10: 2c 0d 0a 22 27 20 73 74 79 6c 65 3d 27 63 6f 6c ,.."' style='col
1a20: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 or:red'><b id='b
1a30: 65 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a e' style='color:
1a40: 72 65 64 27 3e 3c 22 2c 0d 0a 22 62 20 69 64 3d red'><",.."b id=
1a50: 27 62 66 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 'bf' style='colo
1a60: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 67 r:red'><b id='bg
1a70: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 22 2c 0d ' style='colo",.
1a80: 0a 22 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 ."r:red'><b id='
1a90: 62 68 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 bh' style='color
1aa0: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 69 27 :red'><b id='bi'
1ab0: 20 73 74 79 22 2c 0d 0a 22 6c 65 3d 27 63 6f 6c sty",.."le='col
1ac0: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 or:red'><b id='b
1ad0: 6a 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a j' style='color:
1ae0: 72 65 64 27 3e 3c 62 20 69 64 3d 22 2c 0d 0a 22 red'><b id=",.."
1af0: 27 62 6b 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 'bk' style='colo
1b00: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 6c r:red'><b id='bl
1b10: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 ' style='color:r
1b20: 65 64 22 2c 0d 0a 22 27 3e 3c 62 20 69 64 3d 27 ed",.."'><b id='
1b30: 62 6d 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 bm' style='color
1b40: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 6e 27 :red'><b id='bn'
1b50: 20 73 74 79 6c 65 3d 27 63 22 2c 0d 0a 22 6f 6c style='c",.."ol
1b60: 6f 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 or:red'><b id='b
1b70: 6f 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a o' style='color:
1b80: 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 70 27 20 red'><b id='bp'
1b90: 22 2c 0d 0a 22 73 74 79 6c 65 3d 27 63 6f 6c 6f ",.."style='colo
1ba0: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 71 r:red'><b id='bq
1bb0: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 ' style='color:r
1bc0: 65 64 27 3e 3c 62 20 22 2c 0d 0a 22 69 64 3d 27 ed'><b ",.."id='
1bd0: 62 72 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 br' style='color
1be0: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 73 27 :red'><b id='bs'
1bf0: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 22 2c style='color:",
1c00: 0d 0a 22 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 .."red'><b id='b
1c10: 74 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a t' style='color:
1c20: 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 75 27 20 red'><b id='bu'
1c30: 73 74 79 6c 65 22 2c 0d 0a 22 3d 27 63 6f 6c 6f style",.."='colo
1c40: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 76 r:red'><b id='bv
1c50: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 ' style='color:r
1c60: 65 64 27 3e 3c 62 20 69 64 3d 27 62 22 2c 0d 0a ed'><b id='b",..
1c70: 22 77 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 "w' style='color
1c80: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 78 27 :red'><b id='bx'
1c90: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 style='color:re
1ca0: 64 27 3e 22 2c 0d 0a 22 3c 62 20 69 64 3d 27 62 d'>",.."<b id='b
1cb0: 79 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a y' style='color:
1cc0: 72 65 64 27 3e 3c 62 20 69 64 3d 27 62 7a 27 20 red'><b id='bz'
1cd0: 73 74 79 6c 65 3d 27 63 6f 6c 22 2c 0d 0a 22 6f style='col",.."o
1ce0: 72 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 61 r:red'><b id='ca
1cf0: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 ' style='color:r
1d00: 65 64 27 3e 3c 62 20 69 64 3d 27 63 62 27 20 73 ed'><b id='cb' s
1d10: 74 22 2c 0d 0a 22 79 6c 65 3d 27 63 6f 6c 6f 72 t",.."yle='color
1d20: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 63 27 :red'><b id='cc'
1d30: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 style='color:re
1d40: 64 27 3e 3c 62 20 69 64 22 2c 0d 0a 22 3d 27 63 d'><b id",.."='c
1d50: 64 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a d' style='color:
1d60: 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 65 27 20 red'><b id='ce'
1d70: 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 22 style='color:re"
1d80: 2c 0d 0a 22 64 27 3e 3c 62 20 69 64 3d 27 63 66 ,.."d'><b id='cf
1d90: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 ' style='color:r
1da0: 65 64 27 3e 3c 62 20 69 64 3d 27 63 67 27 20 73 ed'><b id='cg' s
1db0: 74 79 6c 65 3d 27 22 2c 0d 0a 22 63 6f 6c 6f 72 tyle='",.."color
1dc0: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 68 27 :red'><b id='ch'
1dd0: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 style='color:re
1de0: 64 27 3e 3c 62 20 69 64 3d 27 63 69 27 22 2c 0d d'><b id='ci'",.
1df0: 0a 22 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a ." style='color:
1e00: 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 6a 27 20 red'><b id='cj'
1e10: 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 64 style='color:red
1e20: 27 3e 3c 62 22 2c 0d 0a 22 20 69 64 3d 27 63 6b '><b",.." id='ck
1e30: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 ' style='color:r
1e40: 65 64 27 3e 3c 62 20 69 64 3d 27 63 6c 27 20 73 ed'><b id='cl' s
1e50: 74 79 6c 65 3d 27 63 6f 6c 6f 72 22 2c 0d 0a 22 tyle='color",.."
1e60: 3a 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 6d 27 :red'><b id='cm'
1e70: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 style='color:re
1e80: 64 27 3e 3c 62 20 69 64 3d 27 63 6e 27 20 73 74 d'><b id='cn' st
1e90: 79 6c 22 2c 0d 0a 22 65 3d 27 63 6f 6c 6f 72 3a yl",.."e='color:
1ea0: 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 6f 27 20 red'><b id='co'
1eb0: 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 64 style='color:red
1ec0: 27 3e 3c 62 20 69 64 3d 27 22 2c 0d 0a 22 63 70 '><b id='",.."cp
1ed0: 27 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 ' style='color:r
1ee0: 65 64 27 3e 3c 62 20 69 64 3d 27 63 71 27 20 73 ed'><b id='cq' s
1ef0: 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 64 27 tyle='color:red'
1f00: 22 2c 0d 0a 22 3e 3c 62 20 69 64 3d 27 63 72 27 ",.."><b id='cr'
1f10: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 style='color:re
1f20: 64 27 3e 3c 62 20 69 64 3d 27 63 73 27 20 73 74 d'><b id='cs' st
1f30: 79 6c 65 3d 27 63 6f 22 2c 0d 0a 22 6c 6f 72 3a yle='co",.."lor:
1f40: 72 65 64 27 3e 3c 62 20 69 64 3d 27 63 74 27 20 red'><b id='ct'
1f50: 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 64 style='color:red
1f60: 27 3e 3c 62 20 69 64 3d 27 63 75 27 20 73 22 2c '><b id='cu' s",
1f70: 0d 0a 22 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 .."tyle='color:r
1f80: 65 64 27 3e 3c 62 20 69 64 3d 27 63 76 27 20 73 ed'><b id='cv' s
1f90: 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 64 27 tyle='color:red'
1fa0: 3e 3c 62 20 69 22 2c 0d 0a 22 64 3d 27 63 77 27 ><b i",.."d='cw'
1fb0: 20 73 74 79 6c 65 3d 27 63 6f 6c 6f 72 3a 72 65 style='color:re
1fc0: 64 27 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c d'></b></b></b><
1fd0: 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 22 2c 0d 0a /b></b></b><",..
1fe0: 22 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e "/b></b></b></b>
1ff0: 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e </b></b></b></b>
2000: 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e </b></b></b></b>
2010: 3c 2f 62 22 2c 0d 0a 22 3e 3c 2f 62 3e 3c 2f 62 </b",.."></b></b
2020: 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 ></b></b></b></b
2030: 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 ></b></b></b></b
2040: 3e 3c 2f 62 3e 3c 2f 62 3e 3c 22 2c 0d 0a 22 2f ></b></b><",.."/
2050: 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f b></b></b></b></
2060: 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f b></b></b></b></
2070: 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f b></b></b></b></
2080: 62 22 2c 0d 0a 22 3e 3c 2f 62 3e 3c 2f 62 3e 3c b",.."></b></b><
2090: 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c /b></b></b></b><
20a0: 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c /b></b></b></b><
20b0: 2f 62 3e 3c 2f 62 3e 3c 22 2c 0d 0a 22 2f 62 3e /b></b><",.."/b>
20c0: 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e </b></b></b></b>
20d0: 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e </b></b></b></b>
20e0: 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 22 </b></b></b></b"
20f0: 2c 0d 0a 22 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 ,.."></b></b></b
2100: 3e 3c 2f 62 3e 3c 2f 62 3e 3c 2f 62 3e 22 0d 0a ></b></b></b>"..
2110: 7d 3b 0d 0a 09 20 20 76 65 63 74 6f 72 20 3c 73 };... vector <s
2120: 74 72 69 6e 67 3e 20 78 74 68 6d 6c 28 78 74 68 tring> xthml(xth
2130: 6d 6c 5f 2c 20 78 74 68 6d 6c 5f 2b 73 69 7a 65 ml_, xthml_+size
2140: 6f 66 28 78 74 68 6d 6c 5f 29 2f 73 69 7a 65 6f of(xthml_)/sizeo
2150: 66 28 2a 78 74 68 6d 6c 5f 29 29 3b 20 0d 0a 09 f(*xthml_)); ...
2160: 69 6e 74 20 5f 20 3d 20 2d 31 3b 20 0d 0a 45 4e int _ = -1; ..EN
2170: 44 0d 0a 7d 0d 0a 2f 2f 20 45 4e 44 20 43 55 54 D..}..// END CUT
2180: 20 48 45 52 45 0d 0a HERE..