Hex Artifact Content
Not logged in

Artifact 1dd2adf40bd7c456b30f9bc3fccf898f17082c04:


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..