ivolff

12

Nov 6th, 2017
329
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <climits>
  4. #include <cmath>
  5. #include <bitset>
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10.     int n;
  11.     cin>>n;
  12.     long int arr[n+1];
  13.     int dnf[100][10];
  14.     for(int i=0;i<=n;i++){
  15.         cin>>arr[i];
  16.     }
  17.     bool big=false;
  18.     for(int i=0;i<n;i++){
  19.         big=arr[i]>=arr[n];
  20.     }
  21.     if(!big){
  22.         cout<<"Impossible";
  23.         return 0;
  24.     }
  25.     if(arr[n]==0){
  26.         cout<<"1&~1";
  27.     }
  28.     for(int i=0;i<31;i++){
  29.         if((arr[n]>>i)&1){
  30.             for(int j=0;j<n;j++){
  31.                 if(!((arr[j]>>i)&1)){
  32.                     dnf[i][j]=1;
  33.                 }
  34.                 else{dnf[i][j]=0;}
  35.             }}
  36.         else
  37.         dnf[i][0]=-1;
  38.         }
  39.     long int A=LONG_MAX,A1=0;
  40.     for(int i=0;i<31;i++){
  41.         if(dnf[i][0]!=-1){
  42.         for(int j=0;j<n;j++){
  43.             if(dnf[i][j])
  44.             A=A&~arr[j];
  45.             else
  46.             A=A&arr[j];
  47.         }
  48.             A1=A1|A;
  49.             A=LONG_MAX;
  50.         }
  51.     }
  52.     int D=0,C=0;
  53.     if(A1==arr[n]){
  54.         for(int i=0;i<31;i++){
  55.             if(dnf[i][0]!=-1){
  56.                 if(D!=0){
  57.                     cout<<"|";
  58.                 }
  59.             cout<<"(";
  60.             for(int j=0;j<n;j++){
  61.                 if(C)
  62.                 cout<<"&";
  63.             if(dnf[i][j]==1){
  64.                 cout<<"~"<<j+1;
  65.             }
  66.                 else if(dnf[i][j]==0){
  67.                 cout<<j+1;
  68.                 }
  69.                 C++;
  70.             }
  71.                 C=0;
  72.             cout<<")";
  73.         }
  74.         }
  75.        
  76.     }
  77.     else{
  78.         cout<<"Impossible";
  79.         return 0;
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment