Advertisement
Guest User

Untitled

a guest
Aug 1st, 2015
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.31 KB | None | 0 0
  1.  
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cctype>
  5. #include <cmath>
  6. #include <cstring>
  7. #include <iostream>
  8. #include <iomanip>
  9. #include <vector>
  10. #include <list>
  11. #include <stack>
  12. #include <queue>
  13. #include <map>
  14. #include <set>
  15. #include <string>
  16. #include <utility>
  17. #include <sstream>
  18. #include <algorithm>
  19. #include <ctime>
  20. #include <cassert>
  21. #include <limits>
  22. using  namespace  std;
  23.  
  24. #define PI acos(-1.0)
  25. #define mem(a,b) memset(a,b,sizeof(a))
  26. #define gcd(a,b) __gcd(a,b)
  27. #define pb push_back
  28. #define mp make_pair
  29. #define x first
  30. #define y second
  31. #define Sort(x) sort(x.begin(),x.end())
  32. #define FOR(i, b, e) for(int i = b; i <= e; i++)
  33. #define FORR(i, b, e) for(int i = b; i >= e; i--)
  34. #define FORI(i, s) for (__typeof ((s).end ()) i = (s).begin (); i != (s).end (); ++i)
  35. #define pr(x) cout<<x<<"\n"
  36. #define pr2(x,y) cout<<x<<" "<<y<<"\n"
  37. #define pr3(x,y,z) cout<<x<<" "<<y<<" "<<z<<"\n";
  38. #define ppr(a) cout<<a.x<<" "<<a.y<<"\n"
  39. #define READ(f) freopen(f, "r", stdin)
  40. #define WRITE(f) freopen(f, "w", stdout)
  41.  
  42. typedef  long long ll;
  43. typedef  pair <int, int> pii;
  44. typedef  pair <double , double> pdd;
  45. typedef  pair <ll , ll > pll;
  46. typedef  vector <int> vi;
  47. typedef  vector <pii> vpii;
  48. typedef  vector <ll > vl;
  49.  
  50. //int dx[]={1,0,-1,0};int dy[]={0,1,0,-1}; //4 Direction
  51. //int dx[]={1,1,0,-1,-1,-1,0,1};
  52. //int dy[]={0,1,1,1,0,-1,-1,-1};//8 direction
  53. //int dx[]={2,1,-1,-2,-2,-1,1,2};
  54. //int dy[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
  55.  
  56. #define MAX 100007
  57. #define EPS 1e-9
  58.  
  59. bool v[505][505][1005];
  60. struct BearPlaysDiv2{
  61.  
  62. string equalPiles(int A, int B, int C)
  63. {
  64.     string ret="possible";
  65.     mem(v,false);
  66.     if((A+B+C)%3==0&&posi(A,B,C)) ret="possible";
  67.     else ret="impossible";
  68.     return ret;
  69. }
  70. bool posi(int a,int b,int c)
  71. {
  72.  
  73.     vi ar;
  74.     ar.pb(a);
  75.     ar.pb(b);
  76.     ar.pb(c);
  77.     Sort(ar);
  78.  
  79.      if(ar[0]==ar[1]&&ar[1]==ar[2])return 1;
  80.  
  81.     if(v[ar[0] ][ar[1] ][ar[2] ])return 0;
  82.     //if(ar[0]==3&&ar[1]==498)pr3(a,b,c);
  83.     v[ar[0] ][ar[1] ][ar[2] ]=true;
  84.     int ans=0;
  85.     if(ar[0]!=ar[1])
  86.     {
  87.        // if(ar[0]==480&&ar[1]==483)pr3(a,b,c);
  88.         ans+=posi(2*ar[0],ar[1]-ar[0],ar[2]);
  89.     }
  90.  
  91.     if(ar[0]!=ar[2])
  92.     ans+=posi(2*ar[0],ar[1],ar[2]-ar[0]);
  93.     if(ar[1]!=ar[2])
  94.     ans+=posi(ar[0],2*ar[1],ar[2]-ar[1]);
  95.     return (ans!=0);
  96. }
  97.  
  98. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement