fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define max3(a,b,c) max(max(a,b),c)
  4. #define min3(a,b,c) min(min(a,b),c)
  5. #define PI acos(-1.0)
  6. #define LL long long
  7. #define INF_MAX 2147483647
  8. #define INF_MIN -2147483647
  9. #define MX 1000005
  10. #define MOD 1000000007
  11. int flag,num[6],visit[6];
  12. void dfs(int cur,int sum)
  13. {
  14. if(cur==5 && sum==23)
  15. {
  16. flag=1;
  17. return;
  18. }
  19. else
  20. {
  21. for(int i=0;i<5;i++)
  22. {
  23. if(!visit[i])
  24. {
  25. visit[i]=1;
  26. dfs(cur+1,sum+num[i]);
  27. dfs(cur+1,sum*num[i]);
  28. dfs(cur+1,sum-num[i]);
  29. visit[i]=0;
  30. }
  31. }
  32. }
  33. }
  34. int main()
  35. {
  36. //freopen("a.in", "r", stdin);
  37. //freopen("a.out", "w", stdout);
  38. int a,b,c,d,e;
  39. while(scanf("%d%d%d%d%d",&a,&b,&c,&d,&e))
  40. {
  41. if(a==0 && b==0 && c==0 && d==0 && e==0) break;
  42. num[0]=a;
  43. num[1]=b;
  44. num[2]=c;
  45. num[3]=d;
  46. num[4]=e;
  47. flag=0;
  48. for(int i=0;i<5;i++)
  49. {
  50. visit[i]=1;
  51. dfs(1,num[i]);
  52. visit[i]=0;
  53. }
  54. if(flag) printf("Possible\n");//cout<<"Possible"<<endl;
  55. else printf("Impossible\n");//cout<<"Impossible"<<endl;
  56. }
  57. }
  58.  
  59.  
  60.  
Success #stdin #stdout 0s 3416KB
stdin
1 1 1 1 1
1 2 3 4 5
2 3 5 7 11
0 0 0 0 0
stdout
Impossible
Possible
Possible