Advertisement
Guest User

Untitled

a guest
Oct 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.04 KB | None | 0 0
  1. #include <stdio.h>
  2. using namespace std;
  3. #define print(n) printf("%d\n",n)
  4. #define f(x,n) for(int x = 0; x < n; ++x)
  5. #define f1(x,n) for(int x = 1; x < n; ++x)
  6. #define len(arr) *(&arr + 1) - arr
  7. #define scanv(n,vec) f(i,n){scanf("%d",vec+i);}
  8. #define printv(vec) f(i,len(vec)){printf("%d ",vec[i]);} printf("\n");
  9. #define printmat(mat) f(i,mat.size()){f(j,mat[i].size()){printf("%d ",mat[i][j]);}printf("\n");}
  10. #define sum(v,aux) f(i,5){aux += v[i]+1;}
  11. #define prod(v,aux) f(i,5){aux*=v[i];}
  12.  
  13. #include <math.h>
  14. #include <vector>
  15.  
  16. int main() {
  17.     int max_dims = 5;
  18.     int d = 0;
  19.    
  20.     scanf("%d",&d);
  21.    
  22.     int dims[max_dims];
  23.     f(i,5){ dims[i] = 1;};
  24.     scanv(d,dims);
  25.     int mtx_vec_size = 1;
  26.     prod(dims,mtx_vec_size);
  27.    
  28.     int mtx[mtx_vec_size];
  29.     scanv(mtx_vec_size,mtx);
  30.    
  31.     int matriz[dims[0]+1][dims[1]+1][dims[2]+1][dims[3]+1][dims[4]+1];
  32.     int m2[dims[0]+1][dims[1]+1][dims[2]+1][dims[3]+1][dims[4]+1];
  33.     int pos = 0;
  34.     f(i0,dims[0]+1){
  35.         f(i1,dims[1]+1){
  36.         f(i2,dims[2]+1){
  37.         f(i3,dims[3]+1){
  38.         f(i4,dims[4]+1){
  39.             m2[i0][i1][i2][i3][i4] = 0;
  40.             if (i0 == 0 || i1 == 0 || i2==0 || i3==0 || i4 == 0){
  41.                   matriz[i0][i1][i2][i3][i4] = 0;
  42.                 }else{
  43.                   matriz[i0][i1][i2][i3][i4] = mtx[pos];  
  44.                   pos++;
  45.                 }
  46.             }
  47.         }
  48.         }
  49.        
  50.     }
  51.     }
  52.  
  53.    
  54.        int suma = 0;
  55.     int exponente = 0;
  56.    
  57.     f1(i0,dims[0]+1){
  58.     f1(i1,dims[1]+1){
  59.     f1(i2,dims[2]+1){
  60.     f1(i3,dims[3]+1){
  61.     f1(i4,dims[4]+1){
  62.             m2[i0][i1][i2][i3][i4] = matriz[i0][i1][i2][i3][i4];
  63.             f(j0,2){
  64.             f(j1,2){
  65.             f(j2,2){
  66.             f(j3,2){
  67.             f(j4,2){
  68.                 suma = j0+j1+j2+j3+j4;
  69.                 if (suma != 5){
  70.                     exponente = (5 + suma)%2;
  71.                 m2[i0][i1][i2][i3][i4] += ((exponente*2)-1)*m2[i0+j0-1][i1+j1-1][i2+j2-1][i3+j3-1][i4+j4-1];    
  72.                 }
  73.                
  74.                
  75.             }}}}}
  76.     }}}}}
  77.  
  78.  
  79.     int t=0;
  80.     scanf("%d",&t);
  81.     f(test,t){
  82.         int res=0;
  83.         int desde[max_dims];
  84.         f(i,max_dims){ desde[i] = 1;};
  85.         scanv(d,desde);
  86.        
  87.         int hasta[max_dims];
  88.         f(i,max_dims){ hasta[i] = 1;};
  89.         scanv(d,hasta);
  90.    
  91.         int ambos[10];
  92.         f(i,max_dims){ ambos[i] = desde[i]-1;};
  93.         f(i,max_dims){ ambos[i+5] = hasta[i];};
  94.         f(j0,2){
  95.         f(j1,2){
  96.         f(j2,2){
  97.         f(j3,2){
  98.         f(j4,2){
  99.  
  100.            
  101.             int exponente = (4+ j0+j1+j2+j3+j4)%2;
  102.            
  103.             int x0 = ambos[j0*5+0] ;
  104.             int x1 = ambos[j1*5+1] ;
  105.             int x2 = ambos[j2*5+2] ;
  106.             int x3 = ambos[j3*5+3] ;
  107.             int x4 = ambos[j4*5+4] ;
  108.            
  109.            
  110.             res += m2[x0][x1][x2][x3][x4] * ((exponente*2)-1);
  111.            
  112.            
  113.         }}}}}
  114.         printf("%d\n",res);
  115.  
  116.         }
  117.  
  118.    
  119.    
  120.  
  121.     return 0;
  122.    
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement