<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>The wondering mind of Mark, the Great and Powerful</title><link>http://blogs.vbcity.com/msg555/</link><description>Mark Gordon's Blog at vbCity</description><managingEditor>Mark Gordon</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Mark Gordon</dc:creator><title>Single Round Match 295</title><link>http://blogs.vbcity.com/msg555/archive/2006/03/31/5944.aspx</link><pubDate>Fri, 31 Mar 2006 17:52:00 GMT</pubDate><guid>http://blogs.vbcity.com/msg555/archive/2006/03/31/5944.aspx</guid><description>&lt;P&gt;Ok, so I think I'm going to start using this blog to discuss TopCoder&amp;nbsp;Competitions.&amp;nbsp; Single Round Match 295, which was on Wednesday, was pretty fun, although I'm a little disappointed that I only got the first problem.&amp;nbsp; My rating went up nonetheless.&lt;/P&gt;
&lt;P&gt;So, you can view the first problem &lt;A href="http://www.topcoder.com/stat?c=problem_statement&amp;amp;pm=6122&amp;amp;rd=9816"&gt;here&lt;/A&gt;, (you have to be logged in, sorry) basically the idea was that you were trying to build a bridge of D length with cards of L length and you had to return the amount of cards&amp;nbsp;necessary to complete it.&amp;nbsp; It had some stuff about equilibriums and center of masses... but the pictures they provided made it clear that each card added 1/(2n) units to the bridge where n is the card number.&amp;nbsp; So all you had to do was sum 1/(2n) until it was greater than D/L (lol)&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: blue"&gt;class &lt;/SPAN&gt;BuildBridge&lt;BR&gt;&lt;SPAN style="COLOR: navy"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;:&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;howManyCards&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;D&lt;SPAN style="COLOR: navy"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;L&lt;SPAN style="COLOR: navy"&gt;)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;double &lt;/SPAN&gt;dist &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: #8000ff"&gt;0.0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;; &lt;/SPAN&gt;L &lt;SPAN style="COLOR: navy"&gt;* &lt;/SPAN&gt;dist &lt;SPAN style="COLOR: navy"&gt;&amp;lt; &lt;/SPAN&gt;D &lt;SPAN style="COLOR: navy"&gt;- &lt;/SPAN&gt;&lt;SPAN style="COLOR: #8000ff"&gt;1e-9&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;; &lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;+=&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dist &lt;SPAN style="COLOR: navy"&gt;+= &lt;/SPAN&gt;&lt;SPAN style="COLOR: #8000ff"&gt;1.0 &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;/ (&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;)&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;/ &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;2 &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;- &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;}&lt;BR&gt;};&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;Unfortunately, I misread the 500 point question.&amp;nbsp; You can view it &lt;A href="http://www.topcoder.com/stat?c=problem_statement&amp;amp;pm=6102&amp;amp;rd=9816"&gt;here&lt;/A&gt;.&amp;nbsp; You had to assist thief &amp;#8220;Jimmy Lightning&amp;#8221; steal the greatest value of diamonds.&amp;nbsp; You were given a list of diamonds that each had a value, the amount of time it took to steal, and the room it was located in.&amp;nbsp; Jimmy instantly moves from one room to another.&amp;nbsp; To make things complicated, each door closes at a certain time after the robbery begins.&amp;nbsp; Rooms are connected linearly, so you need to go through room 3 to go from room 2 to room 4 (I missed this part).&amp;nbsp; Also, you must leave through door 1.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;One of the rules on TopCoder is that your algorithm must complete in 2 seconds.&amp;nbsp; That means you just can't brute force this with a recursive method.&amp;nbsp;&amp;nbsp;I attacked this problem by realizing that at any time t, after the robbery began there is only one way to get the greatest value of diamonds.&amp;nbsp; So at any time t you should try to steal every type of diamond that you can with the room being accessible after you steal it, and recursively call the same function at t + the time it takes to steal that diamond.&amp;nbsp; After the highest value has been obtained from those returned values, simply store that number to a cache, and if later is your function is called at that same value of t you already have the answer.&amp;nbsp; (Note I got this wrong during the competition but I fixed it after)&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: blue"&gt;class &lt;/SPAN&gt;JimmyLightning&lt;BR&gt;&lt;SPAN style="COLOR: navy"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;:&lt;BR&gt;&lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;doors&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;dv&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;dt&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;dr&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;maxdoor&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;cache&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;robTheBank&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;d&lt;SPAN style="COLOR: navy"&gt;, &lt;/SPAN&gt;vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;string&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;diamonds&lt;SPAN style="COLOR: navy"&gt;)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;doors &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;d&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;; &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;&amp;lt; &lt;/SPAN&gt;diamonds&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;size&lt;SPAN style="COLOR: navy"&gt;(); &lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;v&lt;SPAN style="COLOR: navy"&gt;, &lt;/SPAN&gt;t&lt;SPAN style="COLOR: navy"&gt;, &lt;/SPAN&gt;r&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;stringstream ss&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ss &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&amp;lt; &lt;/SPAN&gt;diamonds&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ss &lt;SPAN style="COLOR: navy"&gt;&amp;gt;&amp;gt; &lt;/SPAN&gt;v &lt;SPAN style="COLOR: navy"&gt;&amp;gt;&amp;gt; &lt;/SPAN&gt;t &lt;SPAN style="COLOR: navy"&gt;&amp;gt;&amp;gt; &lt;/SPAN&gt;r&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dv&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;push_back&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;v&lt;SPAN style="COLOR: navy"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dt&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;push_back&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;t&lt;SPAN style="COLOR: navy"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dr&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;push_back&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;r&lt;SPAN style="COLOR: navy"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;do&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;md &lt;SPAN style="COLOR: navy"&gt;= -&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(; &lt;/SPAN&gt;md &lt;SPAN style="COLOR: navy"&gt;&amp;lt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;)&lt;/SPAN&gt;doors&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;size&lt;SPAN style="COLOR: navy"&gt;() - &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;; &lt;/SPAN&gt;md&lt;SPAN style="COLOR: navy"&gt;++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;&amp;gt;= &lt;/SPAN&gt;doors&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;md &lt;SPAN style="COLOR: navy"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;break&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;maxdoor&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;push_back&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;md&lt;SPAN style="COLOR: navy"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;cache&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;push_back&lt;SPAN style="COLOR: navy"&gt;(-&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;while &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;maxdoor&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;++] != -&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;solve&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;cache&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;];&lt;BR&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;void &lt;/SPAN&gt;solve&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;t&lt;SPAN style="COLOR: navy"&gt;)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;cache&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;t&lt;SPAN style="COLOR: navy"&gt;] != -&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;)&lt;BR&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vector &lt;SPAN style="COLOR: navy"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;gt; &lt;/SPAN&gt;res&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;; &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;&amp;lt; &lt;/SPAN&gt;dv&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;size&lt;SPAN style="COLOR: navy"&gt;(); &lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;t &lt;SPAN style="COLOR: navy"&gt;+ &lt;/SPAN&gt;dt&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;] &amp;lt; &lt;/SPAN&gt;maxdoor&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;size&lt;SPAN style="COLOR: navy"&gt;())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;dr&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;] - &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;1 &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&amp;lt;= &lt;/SPAN&gt;maxdoor&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;t &lt;SPAN style="COLOR: navy"&gt;+ &lt;/SPAN&gt;dt&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;]])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;solve&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;t &lt;SPAN style="COLOR: navy"&gt;+ &lt;/SPAN&gt;dt&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;res&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;push_back&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;cache&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;t &lt;SPAN style="COLOR: navy"&gt;+ &lt;/SPAN&gt;dt&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;]] + &lt;/SPAN&gt;dv&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;]);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;max &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;; &lt;/SPAN&gt;i &lt;SPAN style="COLOR: navy"&gt;&amp;lt; &lt;/SPAN&gt;res&lt;SPAN style="COLOR: navy"&gt;.&lt;/SPAN&gt;size&lt;SPAN style="COLOR: navy"&gt;(); &lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;(&lt;/SPAN&gt;res&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;] &amp;gt; &lt;/SPAN&gt;max&lt;SPAN style="COLOR: navy"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;max &lt;SPAN style="COLOR: navy"&gt;= &lt;/SPAN&gt;res&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;i&lt;SPAN style="COLOR: navy"&gt;];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;cache&lt;SPAN style="COLOR: navy"&gt;[&lt;/SPAN&gt;t&lt;SPAN style="COLOR: navy"&gt;] = &lt;/SPAN&gt;max&lt;SPAN style="COLOR: navy"&gt;;&lt;BR&gt;}&lt;BR&gt;};&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;The third problem was sort of a downer.&amp;nbsp; You can view it &lt;A href="http://www.topcoder.com/stat?c=problem_statement&amp;amp;pm=6094&amp;amp;rd=9816"&gt;here&lt;/A&gt;.&amp;nbsp; I didn't get this problem and I still haven't been able to get it to work.&amp;nbsp; I had to read the analysis of this problem after it was posted to figure out how you were supposed to do it.&amp;nbsp; This problem statement is pretty long so I'll leave out a summary of it.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;This problem was supposed to be done by a simple simulation.&amp;nbsp; Obviously you can get into an infinite loop of &amp;#8220;W&amp;#8220;s that would cause a problem.&amp;nbsp; Another rule of top coder is that when you are returning double values you can be off by (absolutely or relatively) 1e-9.&amp;nbsp; So the idea in this problem was just to simulate the problem until the results of the function call become so insignificant (by running into a lot of &amp;#8220;W&amp;#8221;s) that you don't have to go any further in the simulation.&amp;nbsp; I tried to implement this idea but I couldn't get it working on all of the test cases.&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/msg555/aggbug/5944.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mark Gordon</dc:creator><title>zsocket</title><link>http://blogs.vbcity.com/msg555/archive/2006/03/28/5936.aspx</link><pubDate>Tue, 28 Mar 2006 20:59:00 GMT</pubDate><guid>http://blogs.vbcity.com/msg555/archive/2006/03/28/5936.aspx</guid><description>&lt;p&gt;All code highlighting was done by &lt;A href="http://www.textrush.com/"&gt;SourceFormatX&lt;/A&gt;&lt;/p&gt;
 
Class: zsocket : &lt;A href="http://blogs.vbcity.com/upload/msg555/code/cpp/zsocket.zip"&gt;Header&lt;/A&gt; | &lt;A href="http://blogs.vbcity.com/upload/msg555/code/cpp/zsocket.htm"&gt;Html&lt;/A&gt;&lt;BR&gt;Author: Mark, the Great and Powerful&lt;BR&gt;Date of Creation: 9/2/05&lt;BR&gt;Last Update: 3/11/06&lt;BR&gt;Library Dependencies: Ws2_32.lib&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;zsocket is a handy class that I created that handles tcp communication similarily to the WinSock control. I implemented &amp;#8220;events&amp;#8221; (error, statechange, connectionrequest, and dataarrival) by having the client code inherit the zsocket class and override these methods. (You don't have to override any of them) All of the classes functionality is run on one seperate thread (for all instances of zsocket) so even if the thread that created the socket is busy, it can still continue to function. One thing you have to watchout for however is the fact that all the events are called by the single thread that runs all of the sockets. So if you do something in that thread that takes an excessive amount of time, no other sockets (including the current socket) can continue to function and recieve messages. Note that syncconnect and flush will allow sockets to continue to function. &lt;/P&gt;
&lt;P&gt;Below are the avaliable functions that a deriving class can override&lt;BR&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;statechange&lt;FONT color=#000080&gt;(&lt;/FONT&gt;SocketState oldstate&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;connectionrequest&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;) {}
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Here is a sample cleint program using zsocket. It just simply connects to google and requests its homepage. &lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&lt;/FONT&gt;iostream&lt;FONT color=#000080&gt;&amp;gt;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#800000&gt;"zsocket.hpp"
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;using namespace &lt;/FONT&gt;std&lt;FONT color=#000080&gt;;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;class &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;: &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;zsocket
&lt;FONT color=#000080&gt;{
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt;&lt;FONT color=#000080&gt;:
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"Error #" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;num &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"\t" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;description &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;statechange&lt;FONT color=#000080&gt;(&lt;/FONT&gt;SocketState oldstate&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;&lt;FONT color=#000080&gt;(&lt;/FONT&gt;oldstate &lt;FONT color=#000080&gt;!= &lt;/FONT&gt;sckConnected &lt;FONT color=#000080&gt;&amp;amp;&amp;amp; &lt;/FONT&gt;state&lt;FONT color=#000080&gt;() == &lt;/FONT&gt;sckConnected&lt;FONT color=#000080&gt;)
        {
            &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"CONNECTED :D" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
            &lt;/FONT&gt;&lt;FONT color=#008000&gt;//issue request
            &lt;/FONT&gt;sendstring&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"GET / HTTP/1.1\r\n\r\n"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
        }
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;connectionrequest&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//This is a client program so it should not be recieving any requests
    &lt;/FONT&gt;&lt;FONT color=#000080&gt;}
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//To get a string containing the data sent, call getdata()
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;getdata&lt;FONT color=#000080&gt;() &amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
};
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;main&lt;FONT color=#000080&gt;()
{
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Let's try it out
    &lt;/FONT&gt;zsocket &lt;FONT color=#000080&gt;* &lt;/FONT&gt;sck &lt;FONT color=#000080&gt;= &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;sck&lt;FONT color=#000080&gt;-&amp;gt;&lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"www.google.com"&lt;/FONT&gt;&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#800080&gt;80&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;system&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"pause"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;delete &lt;/FONT&gt;sck&lt;FONT color=#000080&gt;;
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;return &lt;/FONT&gt;&lt;FONT color=#800080&gt;0&lt;/FONT&gt;&lt;FONT color=#000080&gt;;
}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Here is an example server program using zsocket. This is just a basic http server. For purposes of keeping this code segment short, it has a memory leak due to mysck instances not being deleted. After running this, try going to http://127.0.0.1 &lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&lt;/FONT&gt;iostream&lt;FONT color=#000080&gt;&amp;gt;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;#include &lt;/FONT&gt;&lt;FONT color=#800000&gt;"zsocket.hpp"
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;using namespace &lt;/FONT&gt;std&lt;FONT color=#000080&gt;;
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;class &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;: &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;zsocket
&lt;FONT color=#000080&gt;{
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt;&lt;FONT color=#000080&gt;:
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"Error #" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;num &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"\t" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;description &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Being a simple server, we'll just send back a hello world
        &lt;/FONT&gt;sendstring&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nHello World"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    }
};
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;class &lt;/FONT&gt;myserver&lt;FONT color=#000080&gt;: &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public &lt;/FONT&gt;zsocket
&lt;FONT color=#000080&gt;{
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt;&lt;FONT color=#000080&gt;:
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;error&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;num&lt;FONT color=#000080&gt;, &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string description&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"Error #" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;num &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"\t" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;description &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;statechange&lt;FONT color=#000080&gt;(&lt;/FONT&gt;SocketState oldstate&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if &lt;/FONT&gt;&lt;FONT color=#000080&gt;(&lt;/FONT&gt;oldstate &lt;FONT color=#000080&gt;!= &lt;/FONT&gt;sckListening &lt;FONT color=#000080&gt;&amp;amp;&amp;amp; &lt;/FONT&gt;state&lt;FONT color=#000080&gt;() == &lt;/FONT&gt;sckListening&lt;FONT color=#000080&gt;)
        {
            &lt;/FONT&gt;cout &lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;&lt;FONT color=#800000&gt;"LISTENING :D" &lt;/FONT&gt;&lt;FONT color=#000080&gt;&amp;lt;&amp;lt; &lt;/FONT&gt;endl&lt;FONT color=#000080&gt;;
        }
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;connectionrequest&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//spawn a socket to take the connection
        &lt;/FONT&gt;zsocket &lt;FONT color=#000080&gt;* &lt;/FONT&gt;sck &lt;FONT color=#000080&gt;= &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;mysck&lt;FONT color=#000080&gt;();
        &lt;/FONT&gt;sck&lt;FONT color=#000080&gt;-&amp;gt;&lt;/FONT&gt;sckaccept&lt;FONT color=#000080&gt;(&lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;);
    }
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;virtual void &lt;/FONT&gt;dataarrival&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;bytessent&lt;FONT color=#000080&gt;)
    {
        &lt;/FONT&gt;&lt;FONT color=#008000&gt;//This is a server socket so it shouldn't recieve data
        //but it could if it later connected or accepted a connection request
    &lt;/FONT&gt;&lt;FONT color=#000080&gt;}
};
&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;main&lt;FONT color=#000080&gt;()
{
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Let's try it out
    &lt;/FONT&gt;zsocket &lt;FONT color=#000080&gt;* &lt;/FONT&gt;svr &lt;FONT color=#000080&gt;= &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new &lt;/FONT&gt;myserver&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;svr&lt;FONT color=#000080&gt;-&amp;gt;&lt;/FONT&gt;scklisten&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800080&gt;80&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;system&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#800000&gt;"pause"&lt;/FONT&gt;&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;delete &lt;/FONT&gt;svr&lt;FONT color=#000080&gt;;
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;return &lt;/FONT&gt;&lt;FONT color=#800080&gt;0&lt;/FONT&gt;&lt;FONT color=#000080&gt;;
}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;Constructor
    zsocket&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Creates a basic socket object and initializes the zsocket thread if needed
&lt;/FONT&gt;Methods
    &lt;FONT color=#008000&gt;//Syncronous connect methods
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;,&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;syncconnect&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Asyncronous connect methods
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckconnect&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Send methods
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;senddata&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;&lt;FONT color=#000080&gt;* &lt;/FONT&gt;buf&lt;FONT color=#000080&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;length&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sendstring&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string str&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sendfile&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string file&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Finishes sending all data for this socket
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;flush&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Recieve methods
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string getdata&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Gets data and removes it from the buffer
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string peekdata&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Gets data but does no remove it from the buffer
    //Listen functions
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;scklisten&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;);
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;scklisten&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Other functions
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;close&lt;FONT color=#000080&gt;();  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Destroys the underlying socket object and creates a new one
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sckaccept&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;requestid&lt;FONT color=#000080&gt;);  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Accepts a connection request
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;bool &lt;/FONT&gt;waitforconnection&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;);  &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Attempts to wait for a connection request and connects to it
&lt;/FONT&gt;Properties
    &lt;FONT color=#008000&gt;//Local properties
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string localip&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string localhost&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Remote properties
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string remoteip&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string remotehost&lt;FONT color=#000080&gt;();
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;port&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Port to listen on or connect to
    &lt;/FONT&gt;SocketState state&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Current state of the socket
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;getlasttime&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//The last time (as returned by GetTickCount()) that the socket was sending or recieving data
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;timeout&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Max timeout while attempting to connect
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;maxsendbuffersize&lt;FONT color=#000080&gt;(); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//the maximum amount of data in bytes that can be sent in one packet.
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;sethost&lt;FONT color=#000080&gt;(&lt;/FONT&gt;std&lt;FONT color=#000080&gt;::&lt;/FONT&gt;string zhost&lt;FONT color=#000080&gt;); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Set the remote host
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;setport&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;zport&lt;FONT color=#000080&gt;); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Set the port to listen on or connect to
    &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;void &lt;/FONT&gt;settimeout&lt;FONT color=#000080&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;int &lt;/FONT&gt;ztimeout&lt;FONT color=#000080&gt;); &lt;/FONT&gt;&lt;FONT color=#008000&gt;//Set the time in milliseconds to attempt to connect
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/FONT&gt;&lt;img src ="http://blogs.vbcity.com/msg555/aggbug/5936.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Mark Gordon</dc:creator><title>Who am I?</title><link>http://blogs.vbcity.com/msg555/archive/2006/03/28/5934.aspx</link><pubDate>Tue, 28 Mar 2006 19:32:00 GMT</pubDate><guid>http://blogs.vbcity.com/msg555/archive/2006/03/28/5934.aspx</guid><description>&lt;P&gt;I am Mark, the Great and Powerful&lt;SUP&gt;1&lt;/SUP&gt;, revered and feared throughout the great blue nowhere.&lt;/P&gt;
&lt;P&gt;I am Mark Gordon, 17 years old, and currently attending Churchill High School in Michigan.  I am part of the Math, Science, and Computers program that my school runs which makes everyday... uh...  interesting.  Whether it be hopscotch on the desks&lt;SUP&gt;2&lt;/SUP&gt; in the computers room, or dancing to &lt;A href="http://www.koreus.com/media/dschinghiskhan-moskau.html"&gt;moskau&lt;/A&gt;&lt;SUP&gt;3&lt;/SUP&gt; (projecting the movie on a wall of course), we try to have fun.&lt;/P&gt;
&lt;P&gt;As far as programming goes, I started on VB6, then moved to C++ and Java.  I kindof know how to use VB.Net.  I love working with WinAPI and sockets and geometry.  Alot of the code I post will likely be on those subjects.  I also like to write algorithms, so I try to participate on &lt;A href="http://www.topcoder.com/tc"&gt;TopCoder&lt;/A&gt;&lt;SUP&gt;4&lt;/SUP&gt; as often as I can. (which hasn't been often lately, but I plan on doing the one tommorow)&lt;/P&gt;
&lt;P&gt;Most of the code you will see on my blog will either be in C++ or VB, or maybe even Java. (or in the case of &lt;A href="http://codeproject.com/useritems/Aaform.asp"&gt;Aaform&lt;/A&gt;, a whole lot of languages)&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;Side Notes&lt;SUP&gt;5&lt;/SUP&gt;&lt;/P&gt;
&lt;P&gt;1.  I prefer to go my &amp;#8220;Mark, the Great and Powerful&amp;#8220; in order to avoid confussion with the other Mark (drydo)&lt;/P&gt;
&lt;P&gt;2.  This was quite the incident, a certain individual was jumping around on the desks when he slammed his head into the metal projector mount hung from the ceiling.  Before getting a paper towel to cover his head, he managed to bleed quite a bit.  I believe the story was that he accidentily fell and hit his head on the corner of a desk.&lt;/P&gt;
&lt;P&gt;3.  This resulted in some detensions when the teacher walked in.&lt;/P&gt;
&lt;P&gt;4.  You can check out my profile &lt;A href="http://www.topcoder.com/tc?module=MemberProfile&amp;tab=alg&amp;cr=15117368"&gt;here&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;5.  I like side notes&lt;/P&gt;&lt;img src ="http://blogs.vbcity.com/msg555/aggbug/5934.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>