Exemple #1
0
static int rem (BTree* a, int x)
{
    if (isleaf(a))
    {
        int pos;
        if (findpos(a,x,&pos))
            delleft(a,pos); /* or delright */
        else
            return 0;
    }
    else {
        int pos;
        if (findpos(a,x,&pos))
        {
            BTree* l = findmax(a->p[pos]);
            a->k[pos] = l->k[l->n-1];
            l->k[l->n-1] = x;
        }
        if (!rem(a->p[pos],x))
            return 0;
        if (underflow(a->p[pos]))
            rearrange(a,pos);
    }
    return 1;
}
Exemple #2
0
int main()
{
    int t=0,n=0,i,j,pos=0,quot,rem,h,count=0;
    int H[505],K[505];
    scanf("%d",&t);
    for(j=0;j<t;j++)
    {
        count=0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
            scanf("%d",&H[i]);
        for(i=0;i<n;i++)
            scanf("%d",&K[i]);
        sort(K,0,n);
        for(i=0;i<n;i++)
        {
        quot=0,rem=0,h=2*H[i];
        while(h>=K[0])
        {
        pos=findpos(K,0,n-1,h);
        quot+=h/(K[pos-1]);
        rem=h%(K[pos-1]);
        h=rem;
        }
        if(h!=0)
        quot++;
        count=count+quot;
        }
        printf("%d\n",count);
    }
    
    getch();
    return 0;
}
Exemple #3
0
void Url::set(const UString& x)
{
   U_TRACE(0, "Url::set(%.*S)", U_STRING_TO_TRACE(x))

   url = x;

   findpos();
}
Exemple #4
0
void Url::set(const UString& x)
{
   U_TRACE(0, "Url::set(%V)", x.rep)

   url = x;

   findpos();
}
Exemple #5
0
BTree* bt_search(BTree* a, int x, int* pos) {
  int found = findpos(a,x,pos);
  if (found)
    return a;
  else if (isleaf(a))
    return NULL;
  else
    return bt_search(a->p[*pos], x, pos);
}
Exemple #6
0
void Diction_list::del(char* word)
{
	int a = findpos(word);
	if (a != -1)
	{
		heap_my.free_mem(((Article*)get(a))->word);
	    heap_my.free_mem(((Article*)get(a))->description);
		remove(a);
	}
}
 TreeNode *getTree(vector<int> &inorder, vector<int> &postorder, int inorderst, int inorderen, int postorderst, int postorderen)
 {
     if (postorderst>=postorderen || inorderst>=inorderen)
         return NULL;
     int pos = findpos(inorder, inorderst, inorderen, postorder[postorderen-1]);
     TreeNode* left = getTree(inorder, postorder, inorderst, pos, postorderst, postorderst+(pos-inorderst));
     TreeNode* right = getTree(inorder, postorder, pos+1, inorderen, postorderst+(pos-inorderst), postorderen-1);
     TreeNode* root = new TreeNode(postorder[postorderen-1]);
     root->left = left;
     root->right = right;
     return root;        
 }
int main()
{
	int findpos(char s[], char c) ;
	char string[80], ch ; 
	int y = 0 ;
	std::cout << "Enter a string value maximum of (80): " ;
    std::cin.getline(string, 80) ;
    std::cout << "Enter a char to be seacrched for: " ;
    std::cin.get(ch) ;
    y = findpos(string, ch);
    if (y == -1)
    	std::cout << "Sorry, character is not a string.";
    return 0;
}
Exemple #9
0
static void insert (BTree* a, int x) {
  int pos;
  findpos(a,x,&pos); /* insere mesmo se ja existir */
  if (isleaf(a)) {
    addright(a,pos,x,NULL);
  }
  else {
    insert( a->p[pos], x );
    if (overflow(a->p[pos])) {
      int m;
      BTree* b = split(a->p[pos],&m);
      addright(a,pos,m,b);
    }
  }
}
Exemple #10
0
/**************************************************************
 * function: clist_insertchunk()
 * args: list -- list to search
 *       addr -- addr of memory chunk
 *       size -- size of memory chunk
 * returns: none
 * called from: ckpt_coalesce()
 *************************************************************/
static void 
clist_insertchunk(CLIST list, caddr_t addr, int size, int file_no, off_t offset)
{
  CLIST_NODE ptr, new_node;
  caddr_t stop, orig_addr;

  stop = (caddr_t)addr+size;
  ptr = findpos(list, addr);

  if(addr > ptr->stop){
    new_node = (CLIST_NODE)malloc(sizeof(struct clist_node));
    new_node->addr = addr;
    new_node->offset = offset;
    new_node->stop = (caddr_t)min(ptr->flink->addr, stop);
    new_node->size = (unsigned long)(new_node->stop) - (unsigned long)(new_node->addr);
    new_node->file_no = file_no;
    cl_insert(ptr, new_node);
    offset += new_node->size;
    addr = (caddr_t)min(ptr->flink->addr, stop);
    ptr = ptr->flink;
  }

  while(stop > ptr->stop){
    if(ptr->stop != ptr->flink->addr){
      orig_addr = addr;
      addr = ptr->stop;
      offset += addr - orig_addr;
      new_node = (CLIST_NODE)malloc(sizeof(struct clist_node));
      new_node->addr = addr;
      new_node->offset = offset;
      new_node->stop = (caddr_t)min(ptr->flink->addr, stop);
      new_node->size = (unsigned long)(new_node->stop) -
                       (unsigned long)(new_node->addr);
      new_node->file_no = file_no;
      cl_insert(ptr, new_node);
      offset += new_node->size;
      addr = (caddr_t)min(ptr->flink->addr, stop);
    }

    ptr=ptr->flink;
  }
}