<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8854842223147373840</id><updated>2011-07-08T06:35:42.169-07:00</updated><category term='hello from the dummy team'/><title type='text'>Algorithms for Dummies : By Dummies</title><subtitle type='html'>This blog is especially meant for wannabe programmers...

Feel free to contact us and HAPPY PROGRAMMING!!!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>merces letifer</name><uri>http://www.blogger.com/profile/10884532210412232986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-5471829829580822701</id><published>2010-03-09T03:52:00.000-08:00</published><updated>2010-03-09T03:59:22.863-08:00</updated><title type='text'>UVa 10432</title><content type='html'>Finding the area of a polygon in a circle is fairly trivial if you remember basic trigonometry or you can make use of Wikipedia (like I did). The solution here uses the fact that a polygon is made up of many triangles and the area for a triangle whose SideAngleSide are known can be obtained using area = 1/2 * side * side * sin(angle). Initially I had gone for Law of Cosines and the Heron's formula but I could not get an AC so here is the code...&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;#include &amp;lt;cmath&amp;gt;&lt;br /&gt;#include &amp;lt;cstdio&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;  double r,n;&lt;br /&gt; while(scanf(&amp;quot;%lf%lf&amp;quot;,&amp;amp;r,&amp;amp;n)!=EOF) {&lt;br /&gt;   double res = n*.5*r*r*sin((2*M_PI/n));&lt;br /&gt;&lt;br /&gt;  printf(&amp;quot;%.3lf\n&amp;quot;,res);&lt;br /&gt; }&lt;br /&gt;  return 0;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-5471829829580822701?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/5471829829580822701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/03/uva-10432.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/5471829829580822701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/5471829829580822701'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/03/uva-10432.html' title='UVa 10432'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-1418796519810838654</id><published>2010-03-06T10:09:00.000-08:00</published><updated>2010-03-06T10:17:52.630-08:00</updated><title type='text'>Graham Scan</title><content type='html'>This is a standard computational geometry algorithm. It is used to find the convex hull of a set of points on a plane in O(n*log(n)). For more info check this out &lt;a href="http://en.wikipedia.org/wiki/Graham_scan"&gt;http://en.wikipedia.org/wiki/Graham_scan&lt;/a&gt; . The following is an implementation of the same :&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include&amp;lt;vector&amp;gt;&lt;br /&gt;#include&amp;lt;stack&amp;gt;&lt;br /&gt;#include&amp;lt;algorithm&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;class Point&lt;br /&gt;{&lt;br /&gt;    public:&lt;br /&gt;        // (x, y)&lt;br /&gt;        double first,second;&lt;br /&gt;        Point():first(.0),second(.0){}&lt;br /&gt;        Point(double _x,double _y):first(_x),second(_y){}&lt;br /&gt;        friend ostream&amp;amp; operator &amp;lt;&amp;lt; (ostream&amp;amp; os, const Point &amp;amp; ref);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;// printer for Point&lt;br /&gt;ostream&amp;amp; operator &amp;lt;&amp;lt; (ostream&amp;amp; os, const Point &amp;amp; ref) {&lt;br /&gt;    return os&amp;lt;&amp;lt;&amp;quot;(&amp;quot;&amp;lt;&amp;lt;ref.first&amp;lt;&amp;lt;&amp;quot;, &amp;quot;&amp;lt;&amp;lt;ref.second&amp;lt;&amp;lt;&amp;quot;)&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// lowest and the eft-most point&lt;br /&gt;Point p1;&lt;br /&gt;&lt;br /&gt;// comparator for the points -- sorts according to polar angles wrt to p1&lt;br /&gt;class comparatorOfPoints&lt;br /&gt;{&lt;br /&gt;    public:&lt;br /&gt;        bool operator () (const Point&amp;amp; p2, const Point&amp;amp; p3) const&lt;br /&gt;        {&lt;br /&gt;            // assuming three points p1,p2,p3&lt;br /&gt;            // vector v1 = p2 - p1 and v2 = p3 - p1&lt;br /&gt;            // vector cross product of v1*v2 &amp;gt; 0 iff p3 lies on left of v1&lt;br /&gt;            return (p2.first - p1.first)*(p3.second - p1.second) - (p2.second - p1.second)*(p3.first - p1.first) &amp;gt;= 0;&lt;br /&gt;        }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;// USAGE&lt;br /&gt;// 1) feed all points --&amp;gt; GrahamScan(deque&amp;lt;Point&amp;gt; _listOfPoints)&lt;br /&gt;// 2) sort all the points --&amp;gt; deque&amp;lt;Point&amp;gt; buildSortedListOfPoints();&lt;br /&gt;// 3) build convex hull --&amp;gt; deque&amp;lt;Point&amp;gt; buildConvexHull();&lt;br /&gt;class GrahamScan&lt;br /&gt;{&lt;br /&gt;    private :&lt;br /&gt;&lt;br /&gt;        // holds all the points in the plane&lt;br /&gt;        deque&amp;lt;Point &amp;gt; listOfPoints;&lt;br /&gt;    public:&lt;br /&gt;&lt;br /&gt;        GrahamScan(deque&amp;lt;Point&amp;gt; _listOfPoints):listOfPoints(_listOfPoints){}&lt;br /&gt;        GrahamScan(const GrahamScan &amp;amp; ref):listOfPoints(ref.listOfPoints){}&lt;br /&gt;&lt;br /&gt;        // sorts the points using the comparator&lt;br /&gt;        deque&amp;lt;Point&amp;gt; buildSortedListOfPoints();&lt;br /&gt;&lt;br /&gt;        // finds the convex hull&lt;br /&gt;        deque&amp;lt;Point&amp;gt; buildConvexHull();&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;deque&amp;lt;Point&amp;gt; GrahamScan::buildSortedListOfPoints() {&lt;br /&gt;    // Sanity check&lt;br /&gt;    if(listOfPoints.size()&amp;lt;3) return listOfPoints;&lt;br /&gt;&lt;br /&gt;    // finds p1&lt;br /&gt;    p1 = listOfPoints[0];&lt;br /&gt;    int positionOfP1 = 0;&lt;br /&gt;    for(int i = 1; i &amp;lt; listOfPoints.size(); ++i) {&lt;br /&gt;        if(listOfPoints[i].second &amp;lt; p1.second) {&lt;br /&gt;            p1 = listOfPoints[i];&lt;br /&gt;            positionOfP1 = i;&lt;br /&gt;        }&lt;br /&gt;        else if(listOfPoints[i].second == p1.second) {&lt;br /&gt;            if(listOfPoints[i].first &amp;lt; p1.first) {&lt;br /&gt;                p1 = listOfPoints[i];&lt;br /&gt;                positionOfP1 = i;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // leave p1 and sort the rest&lt;br /&gt;    swap(listOfPoints[0], listOfPoints[positionOfP1]);&lt;br /&gt;&lt;br /&gt;    sort(listOfPoints.begin()+1, listOfPoints.end(), comparatorOfPoints());&lt;br /&gt;&lt;br /&gt;    return listOfPoints;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// utility function to print the stack&lt;br /&gt;void printStack(stack&amp;lt;Point&amp;gt; sp) {&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;__STACK__&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;    while(!sp.empty()) {&lt;br /&gt;        Point temp = sp.top();&lt;br /&gt;        sp.pop();&lt;br /&gt;        cout&amp;lt;&amp;lt;temp&amp;lt;&amp;lt;endl;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    cout&amp;lt;&amp;lt;&amp;quot;-----------&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;deque&amp;lt;Point&amp;gt; GrahamScan::buildConvexHull() {&lt;br /&gt;    // Sanity Check&lt;br /&gt;    if(listOfPoints.size()&amp;lt;=3) return listOfPoints;&lt;br /&gt;&lt;br /&gt;    stack&amp;lt;Point&amp;gt; stackOfPoints;&lt;br /&gt;    stackOfPoints.push(listOfPoints[0]);&lt;br /&gt;    stackOfPoints.push(listOfPoints[1]);&lt;br /&gt;&lt;br /&gt;    for(int index = 2 ; index&amp;lt;listOfPoints.size(); ++ index) {&lt;br /&gt;        // printStack(stackOfPoints);&lt;br /&gt;        Point p2 = stackOfPoints.top();&lt;br /&gt;        stackOfPoints.pop();&lt;br /&gt;        Point p1 = stackOfPoints.top();&lt;br /&gt;        stackOfPoints.pop();&lt;br /&gt;        Point p3 = listOfPoints[index];&lt;br /&gt;        int turn = (p2.first - p1.first)*(p3.second - p1.second) - (p2.second - p1.second)*(p3.first - p1.first);&lt;br /&gt;        if(turn == 0) {&lt;br /&gt;            // ignore intermediate collinear points&lt;br /&gt;            stackOfPoints.push(p1);&lt;br /&gt;            stackOfPoints.push(p3);&lt;br /&gt;            continue;&lt;br /&gt;        }&lt;br /&gt;        else if(turn &amp;gt; 0) {&lt;br /&gt;            stackOfPoints.push(p1);&lt;br /&gt;            stackOfPoints.push(p2);&lt;br /&gt;            stackOfPoints.push(p3);&lt;br /&gt;            continue;&lt;br /&gt;        }&lt;br /&gt;        else if(turn &amp;lt; 0) {&lt;br /&gt;            // cout&amp;lt;&amp;lt;&amp;quot;encountered a right turn for &amp;quot; &amp;lt;&amp;lt;p3;&lt;br /&gt;            stackOfPoints.push(p1);&lt;br /&gt;            Point p2,p1;&lt;br /&gt;            int _turn = turn;&lt;br /&gt;            while(stackOfPoints.size() &amp;gt;= 2 &amp;amp;&amp;amp; _turn &amp;lt;= 0) {&lt;br /&gt;                printStack(stackOfPoints);&lt;br /&gt;                p2 = stackOfPoints.top();&lt;br /&gt;                stackOfPoints.pop();&lt;br /&gt;                p1 = stackOfPoints.top();&lt;br /&gt;                stackOfPoints.pop();&lt;br /&gt;                _turn = (p2.first - p1.first)*(p3.second - p1.second) - (p2.second - p1.second)*(p3.first - p1.first);&lt;br /&gt;                cout&amp;lt;&amp;lt;&amp;quot;turn = &amp;quot;&amp;lt;&amp;lt;_turn&amp;lt;&amp;lt;endl;&lt;br /&gt;            }&lt;br /&gt;            if(_turn &amp;gt; 0) {&lt;br /&gt;                cout&amp;lt;&amp;lt;&amp;quot;right turn resolved for &amp;quot; &amp;lt;&amp;lt;p3;&lt;br /&gt;                stackOfPoints.push(p1);&lt;br /&gt;                stackOfPoints.push(p2);&lt;br /&gt;                stackOfPoints.push(p3);&lt;br /&gt;                printStack(stackOfPoints);&lt;br /&gt;                continue;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            // Sanity check&lt;br /&gt;            else if(stackOfPoints.size()&amp;lt;2) {&lt;br /&gt;                cout&amp;lt;&amp;lt;&amp;quot;can not from a convex hull due to stack underflow&amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;                return deque&amp;lt;Point&amp;gt;();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    deque&amp;lt;Point&amp;gt; convexHull;&lt;br /&gt;    while(!stackOfPoints.empty()) {&lt;br /&gt;        convexHull.push_front(stackOfPoints.top());&lt;br /&gt;        stackOfPoints.pop();&lt;br /&gt;    }&lt;br /&gt;    return convexHull;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// driver&lt;br /&gt;int main() {&lt;br /&gt;    deque&amp;lt;Point&amp;gt; pointsOnPlane;&lt;br /&gt;    pointsOnPlane.push_back(Point(5,5));&lt;br /&gt;    pointsOnPlane.push_back(Point(1,-1));&lt;br /&gt;    pointsOnPlane.push_back(Point(0,0));&lt;br /&gt;    pointsOnPlane.push_back(Point(2,2));&lt;br /&gt;    pointsOnPlane.push_back(Point(-1,-1));&lt;br /&gt;    pointsOnPlane.push_back(Point(-5,4));&lt;br /&gt;    GrahamScan grahamScan(pointsOnPlane);&lt;br /&gt;    grahamScan.buildSortedListOfPoints();&lt;br /&gt;    deque&amp;lt;Point&amp;gt; convexHull=grahamScan.buildConvexHull();&lt;br /&gt;    for(int i=0;i&amp;lt;convexHull.size();i++) {&lt;br /&gt;        cout&amp;lt;&amp;lt;convexHull[i];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-1418796519810838654?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/1418796519810838654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/03/graham-scan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/1418796519810838654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/1418796519810838654'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/03/graham-scan.html' title='Graham Scan'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-2293549121544264494</id><published>2010-02-27T14:22:00.000-08:00</published><updated>2010-02-27T14:24:53.000-08:00</updated><title type='text'>UVa 357</title><content type='html'>Its basically a variation of the famous "Coin Change" problem. The code is pretty much self-explanatory. Here it is:&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;unsigned long tab[6][30001];&lt;br /&gt;int denom[]={0,1,5,10,25,50};&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;    // tab[denom][val]&lt;br /&gt;    // tab[i][j] = no of ways we can pay value j using upto ith denominations&lt;br /&gt;    for(int i=0;i&amp;lt;6;++i)&lt;br /&gt;    {&lt;br /&gt;        tab[i][0]=1;&lt;br /&gt;    }&lt;br /&gt;    for(int i=0; i&amp;lt;30001;++i )&lt;br /&gt;    {&lt;br /&gt;        tab[0][i]=0;&lt;br /&gt;    }&lt;br /&gt;    int n;&lt;br /&gt;    while(scanf(&amp;quot;%d&amp;quot;,&amp;amp;n)!=EOF)&lt;br /&gt;    {&lt;br /&gt;        if(tab[5][n]!=0)&lt;br /&gt;        {&lt;br /&gt;            if(tab[5][n]==1) printf(&amp;quot;There is only 1 way to produce %d cents change.\n&amp;quot;,n);&lt;br /&gt;            else printf(&amp;quot;There are %lu ways to produce %d cents change.\n&amp;quot;,tab[5][n],n);&lt;br /&gt;            continue;&lt;br /&gt;        }&lt;br /&gt;        bool found =false;&lt;br /&gt;        for(int i=1;i&amp;lt;=n;++i)&lt;br /&gt;        {&lt;br /&gt;            if(found) break;&lt;br /&gt;            for(int j=1;j&amp;lt;=5;++j)&lt;br /&gt;            {&lt;br /&gt;                if(!tab[j][i])&lt;br /&gt;                {&lt;br /&gt;                    if(denom[j]&amp;gt;i) tab[j][i]=tab[j-1][i];&lt;br /&gt;                    else&lt;br /&gt;                    {&lt;br /&gt;                        tab[j][i]=tab[j-1][i]+tab[j][i-denom[j]];&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                if(j==5 &amp;amp;&amp;amp; i==n)&lt;br /&gt;                {&lt;br /&gt;                    if(tab[5][n]==1) printf(&amp;quot;There is only 1 way to produce %d cents change.\n&amp;quot;,n);&lt;br /&gt;                    else printf(&amp;quot;There are %lu ways to produce %d cents change.\n&amp;quot;,tab[5][n],n);&lt;br /&gt;                    found =true;&lt;br /&gt;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-2293549121544264494?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/2293549121544264494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/uva-357.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/2293549121544264494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/2293549121544264494'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/uva-357.html' title='UVa 357'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-1796837657494375195</id><published>2010-02-26T04:37:00.000-08:00</published><updated>2010-02-26T04:43:26.797-08:00</updated><title type='text'>UVa 113</title><content type='html'>Basic formula but difficult constraints. The code I wrote was the first thought that came to my mind. I use binary search to correctly guess 'k' by using 1 to 10^9 as the range. This is my only Java submission, mainly because I did not have a pre-written BigInt class in C/C++. However later on I came across a neat mathematical way of doing it though I have not coded it yet. Here it is:&lt;div&gt;k^n = p &lt;/div&gt;&lt;div&gt;n*log(k) = log(p)&lt;/div&gt;&lt;div&gt;log(k) = log(p)/n&lt;/div&gt;&lt;div&gt;k = exp(log(p)/n)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My code is as follows:&lt;/div&gt;&lt;div&gt;&lt;pre class="source-code"&gt;&lt;code&gt;import java.io.BufferedReader;&lt;/div&gt;&lt;div&gt;import java.io.IOException;&lt;/div&gt;&lt;div&gt;import java.io.InputStreamReader;&lt;/div&gt;&lt;div&gt;import java.math.BigInteger;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;public class Main {&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  public static void main(String args[]) throws IOException {&lt;/div&gt;&lt;div&gt;    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));&lt;/div&gt;&lt;div&gt;    String str1 = &amp;quot;&amp;quot;, str2 = &amp;quot;&amp;quot;;&lt;/div&gt;&lt;div&gt;    int n = 0;&lt;/div&gt;&lt;div&gt;    BigInteger p = new BigInteger(&amp;quot;0&amp;quot;);&lt;/div&gt;&lt;div&gt;    while (true) {&lt;/div&gt;&lt;div&gt;      str1 = br.readLine();&lt;/div&gt;&lt;div&gt;      if (str1 == null) {&lt;/div&gt;&lt;div&gt;        break;&lt;/div&gt;&lt;div&gt;      }&lt;/div&gt;&lt;div&gt;      n = Integer.parseInt(str1);&lt;/div&gt;&lt;div&gt;      str2 = br.readLine();&lt;/div&gt;&lt;div&gt;      if (str2 == null) {&lt;/div&gt;&lt;div&gt;        break;&lt;/div&gt;&lt;div&gt;      }&lt;/div&gt;&lt;div&gt;      p = new BigInteger(str2);&lt;/div&gt;&lt;div&gt;      double lo = 0, hi = 10e9;&lt;/div&gt;&lt;div&gt;      while (lo &amp;lt;= hi) {&lt;/div&gt;&lt;div&gt;        boolean flag = false;&lt;/div&gt;&lt;div&gt;        double mid = lo / 2 + hi / 2;&lt;/div&gt;&lt;div&gt;        BigInteger temp = new BigInteger(Integer.toString((int) mid));&lt;/div&gt;&lt;div&gt;        temp = temp.pow(n);&lt;/div&gt;&lt;div&gt;        int comp = temp.compareTo(p);&lt;/div&gt;&lt;div&gt;        switch (comp) {&lt;/div&gt;&lt;div&gt;          case 0:&lt;/div&gt;&lt;div&gt;            flag = true;&lt;/div&gt;&lt;div&gt;            System.out.println((int) mid);&lt;/div&gt;&lt;div&gt;            break;&lt;/div&gt;&lt;div&gt;          case 1:&lt;/div&gt;&lt;div&gt;            hi = (int) mid - 1;&lt;/div&gt;&lt;div&gt;            break;&lt;/div&gt;&lt;div&gt;          case -1:&lt;/div&gt;&lt;div&gt;            lo = (int) mid + 1;&lt;/div&gt;&lt;div&gt;            break;&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        if (flag) {&lt;/div&gt;&lt;div&gt;          break;&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;      }&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;  }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/code&gt;&lt;/pre&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-1796837657494375195?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/1796837657494375195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/uva-113.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/1796837657494375195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/1796837657494375195'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/uva-113.html' title='UVa 113'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-3954420034563033061</id><published>2010-02-24T07:37:00.000-08:00</published><updated>2010-02-24T07:47:44.712-08:00</updated><title type='text'>SPOJ PROBTNPO</title><content type='html'>When I saw this problem for the first time memoization was the word that came to my mind. And as usual, I jumped into coding it without giving it much thought before it struck me that a static memo is not a very good option as the numbers might go out of bounds because off the 3*n+1 step. Then I resorted to using map, a fancy but very useful data structure. But the "Man proposes,  God disposes and I slog" rule came into play and I got some runtime errors, thanks to my flamboyant coding skills ;-) . Next came a tsunami of TLEs. After sometime i got really frustrated and started typing afresh right into the "code pasting" text field. It was the most naive solution I could think of and expected a TLE. But to my surprise, there it was smiling at me, a beautiful ACC.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include &amp;lt;cstdio&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;#include &amp;lt;algorithm&amp;gt;&lt;/div&gt;&lt;div&gt;using namespace std;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;int f(int i)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;    int cnt = 1;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    while(i != 1) {&lt;/div&gt;&lt;div&gt;        if(i&amp;amp;1) cnt+=2,i=(3*i+1)&amp;gt;&amp;gt;1;&lt;/div&gt;&lt;div&gt;        else ++cnt,i=i&amp;gt;&amp;gt;1;&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    return cnt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;int main()&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;    int i, j, a;&lt;/div&gt;&lt;div&gt;    int mx;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    while(scanf("%d%d", &amp;amp;i, &amp;amp;j)!=EOF) {&lt;/div&gt;&lt;div&gt;        mx = -1;&lt;/div&gt;&lt;div&gt;        for(a=min(i,j); a&amp;lt;=max(i,j); ++a)&lt;/div&gt;&lt;div&gt;            mx = max(mx, f(a));&lt;/div&gt;&lt;div&gt;        printf("%d %d %d\n", i, j, mx);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    return 0;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-3954420034563033061?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/3954420034563033061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-probtnpo.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/3954420034563033061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/3954420034563033061'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-probtnpo.html' title='SPOJ PROBTNPO'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-8566576138443681426</id><published>2010-02-23T10:52:00.000-08:00</published><updated>2010-02-23T11:05:57.795-08:00</updated><title type='text'>SPOJ GOSSIPER</title><content type='html'>This problem fooled me into thinking that it was all about transitive closure. So the first thing I did was to use Floyd-Warshall on it which failed miserably. But then with the help of Gowtham I could figure out that a meeting does not propagate the gossip back to the previous gossiper, a fact that I had clearly ignored even when it was screaming out in the sample input. Anyways couple of WAs, TLEs and SIGSEGVs later I finally got an AC. Phew...&lt;div&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include&amp;lt;stdio.h&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;string&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;map&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;iostream&amp;gt;&lt;/div&gt;&lt;div&gt;using namespace std;&lt;/div&gt;&lt;div&gt;char tab[2100][2100];&lt;/div&gt;&lt;div&gt;map&amp;lt;string,int&amp;gt; name_map;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;int main() {&lt;/div&gt;&lt;div&gt;    int n,m;&lt;/div&gt;&lt;div&gt;    while(scanf(&amp;quot;%d%d&amp;quot;,&amp;amp;n,&amp;amp;m)!=EOF) {&lt;/div&gt;&lt;div&gt;        if(n==0 &amp;amp;&amp;amp; m==0) return 0;&lt;/div&gt;&lt;div&gt;        int _n=0,x,y;&lt;/div&gt;&lt;div&gt;        string name1,name2;&lt;/div&gt;&lt;div&gt;        name_map.clear();&lt;/div&gt;&lt;div&gt;        while(_n&amp;lt;n) {&lt;/div&gt;&lt;div&gt;            cin&amp;gt;&amp;gt;name1;&lt;/div&gt;&lt;div&gt;            name_map.insert(make_pair(name1,_n++));&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        while(m--) {&lt;/div&gt;&lt;div&gt;            cin&amp;gt;&amp;gt;name1&amp;gt;&amp;gt;name2;&lt;/div&gt;&lt;div&gt;            x=name_map.find(name1)-&amp;gt;second;&lt;/div&gt;&lt;div&gt;            y=name_map.find(name2)-&amp;gt;second;&lt;/div&gt;&lt;div&gt;            for(_n=0;_n&amp;lt;n;++_n) {&lt;/div&gt;&lt;div&gt;                if(tab[x][_n] &amp;amp;&amp;amp; _n!=y) tab[y][_n]=1;&lt;/div&gt;&lt;div&gt;                if(tab[y][_n] &amp;amp;&amp;amp; _n!=x) tab[x][_n]=1;&lt;/div&gt;&lt;div&gt;            }&lt;/div&gt;&lt;div&gt;            tab[x][y]=tab[y][x]=1;&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        int cnt=0;&lt;/div&gt;&lt;div&gt;        for(x=0;x&amp;lt;n;++x) {&lt;/div&gt;&lt;div&gt;            for(y=0;y&amp;lt;n;++y) {&lt;/div&gt;&lt;div&gt;                if(tab[x][y]) {&lt;/div&gt;&lt;div&gt;                    cnt++;&lt;/div&gt;&lt;div&gt;                    tab[x][y]=0;&lt;/div&gt;&lt;div&gt;                }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;            }&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        if(cnt==n*n-n) printf(&amp;quot;YES\n&amp;quot;);&lt;/div&gt;&lt;div&gt;        else printf(&amp;quot;NO\n&amp;quot;);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    return 0;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/code&gt;&lt;/pre&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-8566576138443681426?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/8566576138443681426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-gossiper.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/8566576138443681426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/8566576138443681426'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-gossiper.html' title='SPOJ GOSSIPER'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-5019056749869881446</id><published>2010-02-23T02:57:00.000-08:00</published><updated>2010-02-23T03:06:42.631-08:00</updated><title type='text'>UVa 108</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This is a well known problem. Also called Kadane's 2D problem, it asks to find the maximum sub matrix from a given matrix of integers. The theory is to reduce it to Kadane's 1D problem which aims at finding the maximum sub array in a given array of integers. How do we reduce, this is how:&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;1) First find the column sums, can be done on the fly. O(n^2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;2) Then just chose pair of rows from this table of column sums. O(n^2)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;3) For each pair selected find the partial sum of each column from 1 to n&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;4) Run Kadane's 1D on the 1D array found above. O(n)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;5) Voila sub matrix found in O(n^3)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Here it goes:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;div&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include&amp;lt;stdio.h&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;algorithm&amp;gt;&lt;/div&gt;&lt;div&gt;using namespace std;&lt;/div&gt;&lt;div&gt;int tab[101][101];&lt;/div&gt;&lt;div&gt;int main() {&lt;/div&gt;&lt;div&gt;    int n;&lt;/div&gt;&lt;div&gt;    while(scanf(&amp;quot;%d&amp;quot;,&amp;amp;n)==1) {&lt;/div&gt;&lt;div&gt;        for(int i=1;i&amp;lt;=n;++i) {&lt;/div&gt;&lt;div&gt;            for(int j=1;j&amp;lt;=n;++j) {&lt;/div&gt;&lt;div&gt;                scanf(&amp;quot;%d&amp;quot;,&amp;amp;tab[i][j]);&lt;/div&gt;&lt;div&gt;                tab[i][j]+=tab[i-1][j];&lt;/div&gt;&lt;div&gt;            }&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        int mx=tab[1][1];&lt;/div&gt;&lt;div&gt;        for(int i=0;i&amp;lt;n;++i) {&lt;/div&gt;&lt;div&gt;            for(int j=i+1;j&amp;lt;=n;++j) {&lt;/div&gt;&lt;div&gt;                int temp=0;&lt;/div&gt;&lt;div&gt;                for(int k=1;k&amp;lt;=n;++k) {&lt;/div&gt;&lt;div&gt;                    temp+=tab[j][k]-tab[i][k];&lt;/div&gt;&lt;div&gt;                    if(temp&amp;lt;0) temp=0;&lt;/div&gt;&lt;div&gt;                    mx=max(mx,temp);&lt;/div&gt;&lt;div&gt;                }&lt;/div&gt;&lt;div&gt;            }&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        printf(&amp;quot;%d\n&amp;quot;,mx);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    return 0;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium; "&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-5019056749869881446?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/5019056749869881446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/uva-108.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/5019056749869881446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/5019056749869881446'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/uva-108.html' title='UVa 108'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-279364369149963469</id><published>2010-02-22T10:01:00.001-08:00</published><updated>2010-02-22T10:14:54.325-08:00</updated><title type='text'>Posting Code Snippets on Blogger</title><content type='html'>Well after some googling I found out the following "no fuss" code snippet transformers, good for casual bloggers like me. Hope it helps you too:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;1) &lt;/span&gt;&lt;a href="http://blog.js-development.com/2008/03/posting-source-code-on-blogger.html"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;webformatter&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;2) &lt;/span&gt;&lt;a href="http://formatmysourcecode.blogspot.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;formatmysourcecode&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-279364369149963469?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/279364369149963469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/posting-code-snippets-on-blogger.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/279364369149963469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/279364369149963469'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/posting-code-snippets-on-blogger.html' title='Posting Code Snippets on Blogger'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-820593596451528324</id><published>2010-02-22T09:51:00.000-08:00</published><updated>2010-02-22T11:32:11.741-08:00</updated><title type='text'>SPOJ PRIME1</title><content type='html'>&lt;div&gt;Here is another one of those problems that any wannabe programmer should solve to get initiated in the art of problem solving (trying to preach here ;)) . This code got me through, barely though.&lt;/div&gt;&lt;div&gt;It tends to be pretty slow, one must try segmented sieve for problems like this. But after I got an ACC I was not in a mood to dive into it again. Hopefully, someday I'll return to it and give it a second look. Till then ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include&amp;lt;cstdlib&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;iostream&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;string&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;fstream&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;cmath&amp;gt;&lt;/div&gt;&lt;div&gt;#include&amp;lt;cstring&amp;gt;&lt;/div&gt;&lt;div&gt;using namespace std;&lt;/div&gt;&lt;div&gt;#define SZ 32000&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;bool prime_tab[SZ];&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;int main(int argc, char** argv) {&lt;/div&gt;&lt;div&gt;    int m, n, t;&lt;/div&gt;&lt;div&gt;    prime_tab[0] = prime_tab[1] = 1;&lt;/div&gt;&lt;div&gt;    for (int i = 2; i &amp;lt; SZ; i++) {&lt;/div&gt;&lt;div&gt;        if (!prime_tab[i]) {&lt;/div&gt;&lt;div&gt;            for (int j = 2; i * j &amp;lt; SZ; j++) {&lt;/div&gt;&lt;div&gt;                prime_tab[i * j] = 1;&lt;/div&gt;&lt;div&gt;            }&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    cin &amp;gt;&amp;gt; t;&lt;/div&gt;&lt;div&gt;    while (t--) {&lt;/div&gt;&lt;div&gt;        cin &amp;gt;&amp;gt; m &amp;gt;&amp;gt; n;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;        for (int i = m; i &amp;lt;= n; i++) {&lt;/div&gt;&lt;div&gt;            bool pass = (i != 1);&lt;/div&gt;&lt;div&gt;            for (int j = 2; j * j &amp;lt;= i; j++) {&lt;/div&gt;&lt;div&gt;                if (!prime_tab[j]) {&lt;/div&gt;&lt;div&gt;                    if (i % j == 0) {&lt;/div&gt;&lt;div&gt;                        pass = 0;&lt;/div&gt;&lt;div&gt;                        break;&lt;/div&gt;&lt;div&gt;                    }&lt;/div&gt;&lt;div&gt;                }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;            }&lt;/div&gt;&lt;div&gt;            if (pass)&lt;/div&gt;&lt;div&gt;                cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; endl;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;        cout &amp;lt;&amp;lt; endl;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    return 0;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:monospace;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;font-size:130%;"&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;&lt;div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-820593596451528324?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/820593596451528324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-prime1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/820593596451528324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/820593596451528324'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-prime1.html' title='SPOJ PRIME1'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-3362354218343326153</id><published>2010-02-22T09:19:00.000-08:00</published><updated>2010-02-22T11:33:43.399-08:00</updated><title type='text'>SPOJ SUMITR</title><content type='html'>This was good problem for people interested in pure algorithm and tweaking. I had to spend some time (read 2 hours) to come up with something that would satisfy the 256 bytes constraint. Luckily I happen to be a friend of a gifted individual (read one whose got an ACC) who had solved this problem before. With his tips I was able to  to get an ACC  finally :) So here it goes&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; "&gt;&lt;div&gt;&lt;pre class="source-code"&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;&lt;/div&gt;&lt;div&gt;#define f(a,b,c) for(a=b;a&amp;lt;=c;++a)&lt;/div&gt;&lt;div&gt;#define _ std::&lt;/div&gt;&lt;div&gt;int a[100][100],t,n,i,j,x;main(){_ cin&amp;gt;&amp;gt;t;while(t--){_ cin&amp;gt;&amp;gt;n;f(i,1,n)f(j,1,i)_ cin&amp;gt;&amp;gt;a[i][j],a[i][j]=_ max(a[i-1][j],a[i-1][j-1])+a[i][j],x=_ max(x,a[i][j]);_ cout&amp;lt;&amp;lt;x&amp;lt;&amp;lt;_ endl;x=0;}}&lt;/div&gt;&lt;div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial; "&gt;PS- I am open to criticism, please post any improvements that you can suggest.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-3362354218343326153?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/3362354218343326153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-sumitr.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/3362354218343326153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/3362354218343326153'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2010/02/spoj-sumitr.html' title='SPOJ SUMITR'/><author><name>arnav_roy</name><uri>http://www.blogger.com/profile/07741170688568203132</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_V0y_0_xkd58/S4LZ5IPsuBI/AAAAAAAAAAM/6pjhoKcoOsQ/S220/garfield-1069.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8854842223147373840.post-7956000102872987944</id><published>2009-06-24T03:19:00.001-07:00</published><updated>2009-06-24T03:33:22.023-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hello from the dummy team'/><title type='text'>Beginning of the Beginning...</title><content type='html'>A Simple Hello World Program...&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;int main(){&lt;br /&gt;std::cout&amp;lt;&amp;lt;"Hello World"&amp;lt;&amp;lt;std::endl;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8854842223147373840-7956000102872987944?l=algo4dummies.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://algo4dummies.blogspot.com/feeds/7956000102872987944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://algo4dummies.blogspot.com/2009/06/beginning-of-beginning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/7956000102872987944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8854842223147373840/posts/default/7956000102872987944'/><link rel='alternate' type='text/html' href='http://algo4dummies.blogspot.com/2009/06/beginning-of-beginning.html' title='Beginning of the Beginning...'/><author><name>merces letifer</name><uri>http://www.blogger.com/profile/10884532210412232986</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
