int main()
{
	int i,k;
	char s[20];
	n=1;
	while(1)
	{
		scanf("%s",s);
		if(s[0]=='#') break;
		else
		{
			scanf("%d%d",&a[n][0],&a[n][1]);
			a[n][2]=a[n][1];
			n++;
		}
	}
	scanf("%d",&k);
	for(i=n/2;i>0;i--)
	{
		shiftdown(i);
	}
	for(;k;k--)
	{
		printf("%d\n",a[1][0]);
		a[1][2]+=a[1][1];
		shiftdown(1);
	}
	return 0;
}
Exemple #2
0
void proc_ctrl() {
     #ifdef FOR_PSP
     static int counter = 0;
     
     if(++counter % 4 == 0) {
         sceCtrlReadBufferPositive(&pad, 1); 
         if(pad.Buttons & PSP_CTRL_CROSS) {
              shiftdown();               
         }
         if(pad.Buttons & PSP_CTRL_SQUARE) 
              shiftup();
        
        if(pad.Buttons & PSP_CTRL_LEFT)
        moveleft();
        if(pad.Buttons & PSP_CTRL_RIGHT)
        moveright();
        if(pad.Buttons & PSP_CTRL_DOWN)
        movedown();
        if(pad.Buttons & PSP_CTRL_LTRIGGER)
        rquad -= 0.5f;
        if(pad.Buttons & PSP_CTRL_RTRIGGER)
        rquad += 0.5f;
        if(pad.Buttons & PSP_CTRL_CIRCLE)
        r_quad += 0.5f;
        if(pad.Buttons & PSP_CTRL_TRIANGLE)
        r_quad -= 0.5f;
        
     }     
     #endif
}
Exemple #3
0
heapNode removeMin(heapNode* heap, int size) {
    heapNode rv = heap[1];
    //printf("%d:%d:%d\n", size, heap[1].value, heap[size].value);
    heap[1] = heap[size];
    --size;
    shiftdown(heap, size, 1);
    return rv;
}
Exemple #4
0
static MCGeneric deleteRoot(MCHeap* heap)
{
    MCGeneric root = heap->values[1];
    heap->values[1] = heap->values[heap->count];
    heap->count--;
    shiftdown(heap, 1);
    return root;
}
void heapify(int a[], int count)
{
	int i;

	for (i = parentnode(count - 1); i > -1; --i)
	{
		shiftdown(a, i, count);
	}
}
void heapsort(int a[], int count)
{
	int end = count - 1;

	while (end > 0)
	{
		swap(&a[0], &a[end]);
		shiftdown(a, 0, end);
		--end;
	}
}
HEAP GetHeapTop()
{
    HEAP ret = heap[1];

    heap[1] = heap[hSize];
    heap[hSize].groups = INF;
    heap[hSize].st = heap[hSize].et = INF;

    --hSize;
    shiftdown( 1, hSize );

    return ret;
}/* PopHeadTop */
int main(int argc, char const *argv[])
{
	int i, j, temp;
	f = (int *) malloc((n0 - k) * sizeof(int));
	result = (int *) malloc(k * sizeof(int));

	if (f == NULL)
	{
		return -1;
	}

	for (i = 0; i < n0 - k; ++i)
	{
		f[i] = rand();
	}

	// Build the heap of (n0 - k) numbers. Cost: O(n0 - k)
	heapify(f, n0 - k);

    /**
     * For each of the rest k number. If its value is greater than max heap, it will be
     * added to the result array (because it's greater than n0 - k other number).
     * Otherwise, it would replace the max heap value. The heap will be heapify 
     * again and the max value will be pushed to the result array.
     * 
     * The complexity is log(n0 - 1) + log(n0 - 2) + ... + log(n0 - k)
     * */

	for (i = 0; i < k; ++i)
	{
        temp = rand();
        if (temp <= f[0])
        {
            add(f[0]);
            f[0] = temp;
            shiftdown(f, 0, n0 - k);
        }
        else
        {
            add(temp);
        }
	}

    // The result will contains max values

	free(f);
	free(result);

	return 0;
}
Exemple #9
0
void gpuarray_elemwise_collapse(unsigned int n, unsigned int *_nd,
                                size_t *dims, ssize_t **strs) {
  unsigned int i;
  unsigned int k;
  unsigned int nd = *_nd;

  /* Remove dimensions of size 1 */
  for (i = nd; i > 0; i--) {
    if (nd > 1 && dims[i-1] == 1) {
      shiftdown((ssize_t *)dims, i-1, nd);
      for (k = 0; k < n; k++)
        shiftdown(strs[k], i-1, nd);
      nd--;
    }
  }

  for (i = nd - 1; i > 0; i--) {
    int collapse = 1;
    for (k = 0; k < n; k++) {
      collapse &= (strs[k] == NULL ||
                   strs[k][i - 1] == dims[i] * strs[k][i]);
    }
    if (collapse) {
      dims[i-1] *= dims[i];
      shiftdown((ssize_t *)dims, i, nd);
      for (k = 0; k < n; k++) {
        if (strs[k] != NULL) {
          strs[k][i-1] = strs[k][i];
          shiftdown(strs[k], i, nd);
        }
      }
      nd--;
    }
  }
  *_nd = nd;
}
Exemple #10
0
int
minheap_push(minheap_t *heap, const void *val) {
    void *item;

    if (heap->len == array_len(heap->array)) {
        if ((item=array_push(heap->array)) == NULL) {
            return -1;
        }
    } else {
        item = array_at(heap->array, heap->len);
    }

    heap->cpy(item, val);
    heap->len++;
    shiftdown(heap, 0, heap->len - 1);
    return 0;
}
Exemple #11
0
void keydown(unsigned char key, int x, int y)
 {
     #ifndef FOR_PSP
     switch(key)
     {
     case 27:
     {
// 	    glutDestroyWindow(wnd);
 	    exit(0);
 	   }
     break;
     case 'x':
     case 'A':
     shiftup();
     break;
     case 'S':
     case 'd':
     shiftdown();
     break;
      case 'l':
	   {
	       rquad += 0.5;
	   }
	   break;
     case 'r':
	   {

	       rquad -= 0.5;
	   }
	   break;
     case 'o':
	   {
	       r_quad -= 0.5f;
     }
	   break;
     case 's':
	   {
	       r_quad += 0.5f;
	   }
	   break;
     }
     #endif
 }
Exemple #12
0
static void
shiftup(minheap_t *heap, long start) {
    long iend, istart, ichild, iright;

    iend = (long) heap->len;
    istart = start;
    ichild = 2 * istart + 1;
    while (ichild < iend) {
        iright = ichild + 1;
        if (iright < iend && heap->comp(array_at(heap->array, ichild),
                    array_at(heap->array, iright)) > 0) {
            ichild = iright;
        }
        heap->swp(array_at(heap->array, istart), array_at(heap->array, ichild));
        istart = ichild;
        ichild = 2 * istart + 1;
    }
    shiftdown(heap, start, istart);
}
Exemple #13
0
void TileMap::shift(int dx, int dy)
{
	while (dx < 0)
	{
		shiftleft();
		dx++;
	}
	while (dx > 0)
	{
		shiftright();
		dx--;
	}
	while (dy < 0)
	{
		shiftup();
		dy++;
	}
	while (dy > 0)
	{
		shiftdown();
		dy--;
	}
}
Exemple #14
0
void show(void)
{
	register byte *pos;
	static byte y;
    static byte i;
	pos=filebuf+screen_offset;
    for(y=i=0;i<num_lines;i++,y+=line_height)
	{
		if(!ateof && pos>=filebuf+FILEBUF_LEN-MAX_CLINE)
		{
			shiftdown();
			pos-=FILEBUF_LEN/2;
/*            putformatted(0,0,"| |",pos-filebuf,FILEBUF_LEN-MAX_CLINE);
            ozgetch(); */
		}
		if(pos>=filebuf+in_buf) break;
        pos=dcompline(pos);
/*		  ozputs(0,y,line_buf); */
        if(!showbot || i==num_lines-1)
            puttextline(y);
    }
	if(y<80) _ozfilledbox(0,y,239,80-y,0);
    showbot=0;
}
Exemple #15
0
int imail(struct zint_symbol *symbol, unsigned char source[], int length)
{
	char data_pattern[200];
	int error_number;
        int i, j, read;
        char zip[35], tracker[35], zip_adder[11], temp[2];
        short int accum[112], x_reg[112], y_reg[112];
        unsigned char byte_array[13];
        unsigned short usps_crc;
        int codeword[10];
        unsigned short characters[10];
        short int bit_pattern[13], bar_map[130];

	error_number = 0;

	if(length > 32) {
		strcpy(symbol->errtxt, "Input too long");
		return ERROR_TOO_LONG;
	}
	error_number = is_sane(SODIUM, source, length);
	if(error_number == ERROR_INVALID_DATA) {
		strcpy(symbol->errtxt, "Invalid characters in data");
		return error_number;
	}
	
        strcpy(zip, "");
        strcpy(tracker, "");

        /* separate the tracking code from the routing code */
	
	read = 0;
	j = 0;
	for(i = 0; i < length; i++) {
		if(source[i] == '-') {
			tracker[read] = '\0';
			j = 1;
			read = 0;
		} else {
			if(j == 0) {
				/* reading tracker */
				tracker[read] = source[i];
				read++;
			} else {
				/* reading zip code */
				zip[read] = source[i];
				read++;
			}
		}
	}
	if(j == 0) {
		tracker[read] = '\0';
	} else {
		zip[read] = '\0';
	}
	
	if(strlen(tracker) != 20) {
		strcpy(symbol->errtxt, "Invalid length tracking code");
		return ERROR_INVALID_DATA;
	}
	if(strlen(zip) > 11) {
		strcpy(symbol->errtxt, "Invalid ZIP code");
		return ERROR_INVALID_DATA;
	}
	
	/* *** Step 1 - Conversion of Data Fields into Binary Data *** */
	
	/* Routing code first */
	
	for(i = 0; i < 112; i++) {
		accum[i] = 0;
	}
	
	for(read = 0; read < strlen(zip); read++) {

		for(i = 0; i < 112; i++) {
			x_reg[i] = accum[i];
		}
		
		for(i = 0; i < 9; i++) {
			binary_add(accum, x_reg);
		}
		
		x_reg[0] = BCD[ctoi(zip[read]) * 4];
		x_reg[1] = BCD[(ctoi(zip[read]) * 4) + 1];
		x_reg[2] = BCD[(ctoi(zip[read]) * 4) + 2];
		x_reg[3] = BCD[(ctoi(zip[read]) * 4) + 3];
		for(i = 4; i < 112; i++) {
			x_reg[i] = 0;
		}
		
		binary_add(accum, x_reg);
	}
	
	/* add weight to routing code */
	
	for(i = 0; i < 112; i++) {
		x_reg[i] = accum[i];
	}
	
	if(strlen(zip) > 9) {
		strcpy(zip_adder, "1000100001");
	} else {
		if(strlen(zip) > 5) {
			strcpy(zip_adder, "100001");
		} else {
			if(strlen(zip) > 0) {
				strcpy(zip_adder, "1");
			} else {
				strcpy(zip_adder, "0");
			}
		}
	}
	
	for(i = 0; i < 112; i++) {
		accum[i] = 0;
	}
	
	for(read = 0; read < strlen(zip_adder); read++) {

		for(i = 0; i < 112; i++) {
			y_reg[i] = accum[i];
		}
		
		for(i = 0; i < 9; i++) {
			binary_add(accum, y_reg);
		}
		
		y_reg[0] = BCD[ctoi(zip_adder[read]) * 4];
		y_reg[1] = BCD[(ctoi(zip_adder[read]) * 4) + 1];
		y_reg[2] = BCD[(ctoi(zip_adder[read]) * 4) + 2];
		y_reg[3] = BCD[(ctoi(zip_adder[read]) * 4) + 3];
		for(i = 4; i < 112; i++) {
			y_reg[i] = 0;
		}
		
		binary_add(accum, y_reg);
	}

	binary_add(accum, x_reg);
	
	/* tracking code */

	/* multiply by 10 */
	for(i = 0; i < 112; i++) {
		y_reg[i] = accum[i];
	}
		
	for(i = 0; i < 9; i++) {
		binary_add(accum, y_reg);
	}
	
	/* add first digit of tracker */
	y_reg[0] = BCD[ctoi(tracker[0]) * 4];
	y_reg[1] = BCD[(ctoi(tracker[0]) * 4) + 1];
	y_reg[2] = BCD[(ctoi(tracker[0]) * 4) + 2];
	y_reg[3] = BCD[(ctoi(tracker[0]) * 4) + 3];
	for(i = 4; i < 112; i++) {
		y_reg[i] = 0;
	}
		
	binary_add(accum, y_reg);
	
	/* multiply by 5 */
	for(i = 0; i < 112; i++) {
		y_reg[i] = accum[i];
	}
		
	for(i = 0; i < 4; i++) {
		binary_add(accum, y_reg);
	}
	
	/* add second digit */
	y_reg[0] = BCD[ctoi(tracker[1]) * 4];
	y_reg[1] = BCD[(ctoi(tracker[1]) * 4) + 1];
	y_reg[2] = BCD[(ctoi(tracker[1]) * 4) + 2];
	y_reg[3] = BCD[(ctoi(tracker[1]) * 4) + 3];
	for(i = 4; i < 112; i++) {
		y_reg[i] = 0;
	}
	
	binary_add(accum, y_reg);
	
	/* and then the rest */

	for(read = 2; read < strlen(tracker); read++) {

		for(i = 0; i < 112; i++) {
			y_reg[i] = accum[i];
		}
		
		for(i = 0; i < 9; i++) {
			binary_add(accum, y_reg);
		}
		
		y_reg[0] = BCD[ctoi(tracker[read]) * 4];
		y_reg[1] = BCD[(ctoi(tracker[read]) * 4) + 1];
		y_reg[2] = BCD[(ctoi(tracker[read]) * 4) + 2];
		y_reg[3] = BCD[(ctoi(tracker[read]) * 4) + 3];
		for(i = 4; i < 112; i++) {
			y_reg[i] = 0;
		}
		
		binary_add(accum, y_reg);
	}

	/* printf("Binary data 1: ");
	hex_dump(accum); */
	
	/* *** Step 2 - Generation of 11-bit CRC on Binary Data *** */

	accum[103] = 0;
	accum[102] = 0;
	
	memset(byte_array, 0, 13);
	for(j = 0; j < 13; j++) {
		i = 96 - (8 * j);
		byte_array[j] = 0;
		byte_array[j] += accum[i];
		byte_array[j] += 2 * accum[i + 1];
		byte_array[j] += 4 * accum[i + 2];
		byte_array[j] += 8 * accum[i + 3];
		byte_array[j] += 16 * accum[i + 4];
		byte_array[j] += 32 * accum[i + 5];
		byte_array[j] += 64 * accum[i + 6];
		byte_array[j] += 128 * accum[i + 7];
	}
	
	usps_crc = USPS_MSB_Math_CRC11GenerateFrameCheckSequence(byte_array);
	/* printf("FCS 2: %4.4X\n", usps_crc); */
	
	/* *** Step 3 - Conversion from Binary Data to Codewords *** */
	
	/* start with codeword J which is base 636 */
	for(i = 0; i < 112; i++) {
		x_reg[i] = 0;
		y_reg[i] = 0;
	}
	
	x_reg[101] = 1;
	x_reg[98] = 1;
	x_reg[97] = 1;
	x_reg[96] = 1;
	x_reg[95] = 1;
	x_reg[94] = 1;
	
	for(i = 92; i >= 0; i--) {
		y_reg[i] = islarger(accum, x_reg);
		if(y_reg[i] == 1) {
			binary_subtract(accum, x_reg);
		}
		shiftdown(x_reg);
	}
	
	codeword[9] = (accum[9] * 512) + (accum[8] * 256) + (accum[7] * 128) + (accum[6] * 64) +
			(accum[5] * 32) + (accum[4] * 16) + (accum[3] * 8) + (accum[2] * 4) +
			(accum[1] * 2) + accum[0];
	
	/* then codewords I to B with base 1365 */
	
	for(j = 8; j > 0; j--) {
		for(i = 0; i < 112; i++) {
			accum[i] = y_reg[i];
			y_reg[i] = 0;
			x_reg[i] = 0;
		}
		x_reg[101] = 1;
		x_reg[99] = 1;
		x_reg[97] = 1;
		x_reg[95] = 1;
		x_reg[93] = 1;
		x_reg[91] = 1;
		for(i = 91; i >= 0; i--) {
			y_reg[i] = islarger(accum, x_reg);
			if(y_reg[i] == 1) {
				binary_subtract(accum, x_reg);
			}
			shiftdown(x_reg);
		}
	
		codeword[j] = (accum[10] * 1024) + (accum[9] * 512) + (accum[8] * 256) +
				(accum[7] * 128) + (accum[6] * 64) + (accum[5] * 32) +
				(accum[4] * 16) + (accum[3] * 8) + (accum[2] * 4) +
				(accum[1] * 2) + accum[0];
	}
	
	codeword[0] = (y_reg[10] * 1024) + (y_reg[9] * 512) + (y_reg[8] * 256) +
			(y_reg[7] * 128) + (y_reg[6] * 64) + (y_reg[5] * 32) +
			(y_reg[4] * 16) + (y_reg[3] * 8) + (y_reg[2] * 4) +
			(y_reg[1] * 2) + y_reg[0];
	
	for(i = 0; i < 8; i++) {
		if(codeword[i] == 1365) {
			codeword[i] = 0;
			codeword[i + 1]++;
		}
	}

	/* printf("Codewords  3: ");
	for(i = 0; i < 10; i++) {
		printf("%d ", codeword[i]);
	}
	printf("\n"); */
	
	/* *** Step 4 - Inserting Additional Information into Codewords *** */
	
	codeword[9] = codeword[9] * 2;
	
	if(usps_crc >= 1024) {
		codeword[0] += 659;
	}
	
	/* printf("Codewords 4b: ");
	for(i = 0; i < 10; i++) {
		printf("%d ", codeword[i]);
	}
	printf("\n"); */
	
	/* *** Step 5 - Conversion from Codewords to Characters *** */
	
	for(i = 0; i < 10; i++) {
		if(codeword[i] < 1287) {
			characters[i] = AppxD_I[codeword[i]];
		} else {
			characters[i] = AppxD_II[codeword[i] - 1287];
		}
	}
	
	/* printf("Characters 5a: ");
	for(i = 0; i < 10; i++) {
		printf("%4.4X ", characters[i]);
	}
	printf("\n"); */

	breakup(bit_pattern, usps_crc);

	for(i = 0; i < 10; i++) {
		if(bit_pattern[i] == 1) {
			characters[i] = 0x1FFF - characters[i];
		}
	}
	
	/* printf("Characters 5b: ");
	for(i = 0; i < 10; i++) {
		printf("%4.4X ", characters[i]);
	}
	printf("\n"); */

	/* *** Step 6 - Conversion from Characters to the Intelligent Mail Barcode *** */
	
	for(i = 0; i < 10; i++) {
		breakup(bit_pattern, characters[i]);
		for(j = 0; j < 13; j++) {
			bar_map[AppxD_IV[(13 * i) + j] - 1] = bit_pattern[j];
		}
	}
	
	strcpy(data_pattern, "");
	temp[1] = '\0';
	for(i = 0; i < 65; i++) {
		j = 0;
		if(bar_map[i] == 0)
			j += 1;
		if(bar_map[i + 65] == 0)
			j += 2;
		temp[0] = itoc(j);
		concat(data_pattern, temp);
	}
	
	/* Translate 4-state data pattern to symbol */
	read = 0;
	for(i = 0; i < strlen(data_pattern); i++)
	{
		if((data_pattern[i] == '1') || (data_pattern[i] == '0'))
		{
			set_module(symbol, 0, read);
		}
		set_module(symbol, 1, read);
		if((data_pattern[i] == '2') || (data_pattern[i] == '0'))
		{
			set_module(symbol, 2, read);
		}
		read += 2;
	}

	symbol->row_height[0] = 3;
	symbol->row_height[1] = 2;
	symbol->row_height[2] = 3;

	symbol->rows = 3;
	symbol->width = read - 1;
	return error_number;
}
Exemple #16
0
void checkshiftdown(void)
{
	if(screen_offset>=in_buf-MAX_CLINE && !ateof)
		shiftdown();
}