Hex Artifact Content
Not logged in

Artifact 053f4255282269322f67482123f7fd8d9c056208:


0000: 23 69 6e 63 6c 75 64 65 20 3c 76 65 63 74 6f 72  #include <vector
0010: 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69  >.#include <stri
0020: 6e 67 3e 0a 75 73 69 6e 67 20 6e 61 6d 65 73 70  ng>.using namesp
0030: 61 63 65 20 73 74 64 3b 0a 0a 73 74 72 75 63 74  ace std;..struct
0040: 20 42 69 6e 61 72 79 43 6f 64 65 0a 7b 0a 09 76   BinaryCode.{..v
0050: 65 63 74 6f 72 3c 73 74 72 69 6e 67 3e 20 64 65  ector<string> de
0060: 63 6f 64 65 28 20 73 74 72 69 6e 67 20 6d 65 73  code( string mes
0070: 73 61 67 65 20 29 0a 09 7b 0a 09 09 76 65 63 74  sage )..{...vect
0080: 6f 72 3c 73 74 72 69 6e 67 3e 20 61 6e 73 3b 0a  or<string> ans;.
0090: 09 09 61 6e 73 2e 70 75 73 68 5f 62 61 63 6b 28  ..ans.push_back(
00a0: 20 64 65 63 6f 64 65 28 30 2c 20 6d 65 73 73 61   decode(0, messa
00b0: 67 65 29 20 29 3b 0a 09 09 61 6e 73 2e 70 75 73  ge) );...ans.pus
00c0: 68 5f 62 61 63 6b 28 20 64 65 63 6f 64 65 28 31  h_back( decode(1
00d0: 2c 20 6d 65 73 73 61 67 65 29 20 29 3b 0a 09 09  , message) );...
00e0: 72 65 74 75 72 6e 20 61 6e 73 3b 0a 09 7d 0a 0a  return ans;..}..
00f0: 09 73 74 72 69 6e 67 20 64 65 63 6f 64 65 28 69  .string decode(i
0100: 6e 74 20 63 2c 20 73 74 72 69 6e 67 20 51 29 0a  nt c, string Q).
0110: 09 7b 0a 09 09 73 74 72 69 6e 67 20 50 3b 20 50  .{...string P; P
0120: 20 2b 3d 20 63 68 61 72 28 27 30 27 2b 63 29 3b   += char('0'+c);
0130: 0a 09 09 66 6f 72 28 69 6e 74 20 69 3d 30 3b 20  ...for(int i=0; 
0140: 69 3c 51 2e 73 69 7a 65 28 29 2d 31 3b 20 2b 2b  i<Q.size()-1; ++
0150: 69 29 0a 09 09 09 69 66 28 20 27 30 27 20 3c 3d  i)....if( '0' <=
0160: 20 51 5b 69 5d 2d 63 20 26 26 20 51 5b 69 5d 2d   Q[i]-c && Q[i]-
0170: 63 3c 3d 27 31 27 20 29 0a 09 09 09 09 50 20 2b  c<='1' ).....P +
0180: 3d 20 63 68 61 72 28 51 5b 69 5d 2d 63 29 2c 0a  = char(Q[i]-c),.
0190: 09 09 09 09 63 20 3d 20 50 5b 50 2e 73 69 7a 65  ....c = P[P.size
01a0: 28 29 2d 32 5d 2d 27 30 27 20 2b 20 50 5b 50 2e  ()-2]-'0' + P[P.
01b0: 73 69 7a 65 28 29 2d 31 5d 2d 27 30 27 3b 0a 09  size()-1]-'0';..
01c0: 09 09 65 6c 73 65 0a 09 09 09 09 72 65 74 75 72  ..else.....retur
01d0: 6e 20 22 4e 4f 4e 45 22 3b 0a 09 09 72 65 74 75  n "NONE";...retu
01e0: 72 6e 20 63 3d 3d 51 5b 51 2e 73 69 7a 65 28 29  rn c==Q[Q.size()
01f0: 2d 31 5d 2d 27 30 27 20 3f 20 50 20 3a 20 22 4e  -1]-'0' ? P : "N
0200: 4f 4e 45 22 3b 0a 09 7d 0a 7d 3b 0a              ONE";..}.};.