zero_shubham1

KK_and_crush

Jun 29th, 2018
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. typedef struct node{
  6.     int data;
  7.     struct node *next;
  8. }node;
  9.  
  10. void hashify(int *x, int *y, int *in,int *n){
  11.     *x = (*in%10)%*n;
  12.     *in = (*in-(*in%10))/ 10;
  13.     *y = (*in%10)%*n;
  14.     *in = (*in-(*in%10))/ 10;
  15. }
  16.  
  17. int main(){
  18.     int t,size,n,j,i,input,pos_c,pos_r,tmp,flag=0;
  19.     node *tpointer;
  20.     scanf("%d",&t);
  21.     while(t>0){
  22.     node **arr;
  23.         scanf("%d",&size);
  24.         n = sqrt(size);
  25.         if(n*n < size)
  26.             n++;
  27.         arr = (node**)malloc(n * sizeof(node*));
  28.         for(i=0; i<n; i++){
  29.             arr[i] = (node*)malloc(n * sizeof(node));
  30.         }
  31.  
  32.         for(i=0;i<n;i++)
  33.             for(j=0;j<n;j++){
  34.                 (arr[i][j]).data = -999999;
  35.                 arr[i][j].next = NULL;
  36.             }
  37.  
  38.         while(size>0){
  39.             flag=0;
  40.             scanf("%d",&input);
  41.  
  42.             if(input<0)
  43.                 tmp = -1 *input;
  44.             else
  45.                 tmp = input;
  46.  
  47.             //printf("\nVal n: %d \n",n);
  48.             hashify(&pos_r,&pos_c,&tmp,&n);
  49.             while(tmp != 0 && arr[pos_r][pos_c].data != -999999){
  50.                 hashify(&pos_r,&pos_c,&tmp,&n);
  51.             }
  52.             //printf("\nVal posR=%d: posC=%d \n",pos_r,pos_c);
  53.             if(arr[pos_r][pos_c].data!=-999999){
  54.                 for(i=0;i<n;i++){
  55.                     for(j=0;j<n;j++){
  56.                         if(arr[i][j].data==-999999){
  57.                                 flag=1;
  58.                                 break;
  59.                         }
  60.                     }
  61.                     if(flag==1)
  62.                         break;
  63.                 }
  64.             //printf("\nVal posRi=%d: posCj=%d \n",i,j);
  65.                 arr[i][j].data = input;
  66.                 //printf("\ninput done %d\n", arr[i][j].data);
  67.                 tpointer = &arr[pos_r][pos_c];
  68.                 while((*tpointer).next != NULL)
  69.                     tpointer = arr[pos_r][pos_c].next;
  70.                 (*tpointer).next = &arr[i][j];
  71.             }
  72.             else{
  73.                 arr[pos_r][pos_c].data = input;
  74.                 //printf("\ninput done %d\n",arr[pos_r][pos_c].data);
  75.             }
  76.         size--;
  77.         }
  78.  
  79.         scanf("%d",&size);
  80.         while(size>0){
  81.             scanf("%d",&input);
  82.  
  83.             if(input<0)
  84.                 tmp = -1 *input;
  85.             else
  86.                 tmp = input;
  87.  
  88.             hashify(&pos_r,&pos_c,&tmp,&n);
  89.             while(tmp != 0 && arr[pos_r][pos_c].data != input){
  90.                 if(arr[pos_r][pos_c].next!=NULL){
  91.                     tpointer = arr[pos_r][pos_c].next;
  92.                         while((*tpointer).next != NULL && (*tpointer).data != input){
  93.                             tpointer = (*tpointer).next;
  94.                         }
  95.                         if((*tpointer).data==input)
  96.                             break;
  97.                 }
  98.                 hashify(&pos_r,&pos_c,&tmp,&n);
  99.             }
  100.             if(arr[pos_r][pos_c].data==input || (*tpointer).data == input)
  101.                 printf("Yes\n");
  102.             else
  103.                 printf("No\n");
  104.         size--;
  105.         }
  106.  
  107.  
  108.     t--;
  109.     }
  110.     return 0;
  111. }
Add Comment
Please, Sign In to add comment