Advertisement
Guest User

Mother's Milk

a guest
Jul 26th, 2012
488
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.92 KB | None | 0 0
  1.  
  2. /*
  3. ID: codeKNIGHT
  4. LANG: JAVA
  5. TASK: milk3
  6. */
  7. import java.util.*;
  8. import java.math.*;
  9. import java.io.*;
  10. class milk3
  11. {
  12.     static int cap[]=new int[3];
  13.     static boolean visit[];
  14.     static int dp[][];
  15.    
  16.     public static void main(String args[])throws IOException
  17.     {
  18.        
  19.         Scanner in=new Scanner(System.in);
  20.         //Scanner in=new Scanner(new FileReader("milk3.in"));
  21.         PrintWriter out=new PrintWriter(System.out);
  22.         //BufferedReader br=new BufferedReader(new FileReader("C:\\Users\\Lokesh\\Desktop\\input.in"));
  23.         //PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter("milk3.out")));
  24.         int i;
  25.         for(i=0;i<3;i++)
  26.         cap[i]=in.nextInt();
  27.        
  28.         dp=new int[cap[0]+1][cap[1]+1];
  29.         visit=new boolean[cap[2]+1];
  30.         int k[]=new int[]{0,0,cap[2]};
  31.         search(k);
  32.         StringBuilder res=new StringBuilder("");
  33.         for(i=0;i<=cap[2];i++)
  34.         if(visit[i])
  35.         res.append(i+" ");
  36.         String ans=res.toString();
  37.         ans=ans.trim();
  38.         out.println(ans);
  39.         out.flush();
  40.         System.exit(0);
  41.     }
  42.     public static void search(int cur[])
  43.     {
  44.         if(dp[cur[0]][cur[1]]==1)
  45.         return;
  46.         dp[cur[0]][cur[1]]=1;
  47.         if(cur[0]==0)
  48.         visit[cur[2]]=true;
  49.         int i,j;
  50.         for(i=0;i<3;i++)
  51.         {
  52.             for(j=0;j<3;j++)
  53.             {
  54.                 if(i!=j)
  55.                 {
  56.                     int temp[]={cur[0],cur[1],cur[2]};
  57.                     int a[]=pour(cur,i,j);
  58.                     if(dp[a[0]][a[1]]==0)
  59.                     search(a);
  60.                     cur=temp;
  61.                 }
  62.             }
  63.         }
  64.     }
  65.     public static int [] pour(int c[],int from,int to)
  66.     {
  67.        
  68.         int amt=c[from];
  69.         if(c[to]+amt>cap[to])
  70.         amt=cap[to]-c[to];
  71.         c[to]+=amt;
  72.         c[from]-=amt;
  73.         return c;
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement