Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- typedef struct node{
- int data;
- struct node *next;
- }node;
- void hashify(int *x, int *y, int *in,int *n){
- *x = (*in%10)%*n;
- *in = (*in-(*in%10))/ 10;
- *y = (*in%10)%*n;
- *in = (*in-(*in%10))/ 10;
- }
- int main(){
- int t,size,n,j,i,input,pos_c,pos_r,tmp,flag=0;
- node *tpointer;
- scanf("%d",&t);
- while(t>0){
- node **arr;
- scanf("%d",&size);
- n = sqrt(size);
- if(n*n < size)
- n++;
- arr = (node**)malloc(n * sizeof(node*));
- for(i=0; i<n; i++){
- arr[i] = (node*)malloc(n * sizeof(node));
- }
- for(i=0;i<n;i++)
- for(j=0;j<n;j++){
- (arr[i][j]).data = -999999;
- arr[i][j].next = NULL;
- }
- while(size>0){
- flag=0;
- scanf("%d",&input);
- if(input<0)
- tmp = -1 *input;
- else
- tmp = input;
- //printf("\nVal n: %d \n",n);
- hashify(&pos_r,&pos_c,&tmp,&n);
- while(tmp != 0 && arr[pos_r][pos_c].data != -999999){
- hashify(&pos_r,&pos_c,&tmp,&n);
- }
- //printf("\nVal posR=%d: posC=%d \n",pos_r,pos_c);
- if(arr[pos_r][pos_c].data!=-999999){
- for(i=0;i<n;i++){
- for(j=0;j<n;j++){
- if(arr[i][j].data==-999999){
- flag=1;
- break;
- }
- }
- if(flag==1)
- break;
- }
- //printf("\nVal posRi=%d: posCj=%d \n",i,j);
- arr[i][j].data = input;
- //printf("\ninput done %d\n", arr[i][j].data);
- tpointer = &arr[pos_r][pos_c];
- while((*tpointer).next != NULL)
- tpointer = arr[pos_r][pos_c].next;
- (*tpointer).next = &arr[i][j];
- }
- else{
- arr[pos_r][pos_c].data = input;
- //printf("\ninput done %d\n",arr[pos_r][pos_c].data);
- }
- size--;
- }
- scanf("%d",&size);
- while(size>0){
- scanf("%d",&input);
- if(input<0)
- tmp = -1 *input;
- else
- tmp = input;
- hashify(&pos_r,&pos_c,&tmp,&n);
- while(tmp != 0 && arr[pos_r][pos_c].data != input){
- if(arr[pos_r][pos_c].next!=NULL){
- tpointer = arr[pos_r][pos_c].next;
- while((*tpointer).next != NULL && (*tpointer).data != input){
- tpointer = (*tpointer).next;
- }
- if((*tpointer).data==input)
- break;
- }
- hashify(&pos_r,&pos_c,&tmp,&n);
- }
- if(arr[pos_r][pos_c].data==input || (*tpointer).data == input)
- printf("Yes\n");
- else
- printf("No\n");
- size--;
- }
- t--;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment