Submission #860171


Source Code Expand

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int a[100010], b[100010], x[100010], r[100010][20];

int *binary(int *seq, const int len, const int key) {
	int flag, left, mid, right;
	flag = 0; left = 0; right = len-1;
	mid = (left+right)/2;
//	printf("  %d %d %d\n", left, mid, right);
	while (left <= right && flag < 2) {
		if ((left+right)%2) {
			if (*(seq+mid) < key) left = mid + 1;
			else if (*(seq+mid) == key) { left = mid; flag++; }
			else if (*(seq+mid+1) > key) right = mid - 1;
			else if (*(seq+mid+1) == key) { right = mid; flag++; }
			else break;
		} else {
			if (*(seq+mid) < key) left = mid + 1;
			else if (*(seq+mid) > key) right = mid - 1;
			else { right = mid; flag++; }
		}
		mid = (left+right)/2;
//		printf("  %d %d %d\n", left, mid, right);
	}
	return seq+mid;
}

int main() {
	int D, from, i, j, k, L, max, N, *ptr, Q, to;
	scanf("%d", &N);
	for (i=0;i<N;i++) scanf("%d", &x[i]);
	scanf("%d%d", &L, &Q);
	for (j=0;j<Q;j++) scanf("%d%d", &a[j], &b[j]);

	for (i=0;i<N-1;i++) {
		ptr = binary(x, N, x[i]+L);
		r[i][0] = ptr-x+1;
	}
	r[N-1][0] = N+10;

	for (k=1;k<20;k++) {
		for (i=0;i<N-1;i++) {
			if (r[i][k-1] == N+10) r[i][k] = N+10;
			else r[i][k] = r[r[i][k-1]-1][k-1];
		}
		r[N-1][k] = N+10;
	}
//	for (i=0;i<N;i++) for (k=0;k<5;k++) printf("r[%d][%d] = %d\n", i, k, r[i][k]);
//	return 0;
//	printf("\n");

	for (k=0;k<20;k++) {
		if (r[0][k] == N) break;
	}
	max = k+1;

	for (j=0;j<Q;j++) {
		D = 0;
		if (a[j]>b[j]) { from = b[j]; to = a[j]; }
		else { from = a[j]; to = b[j]; }
		do {
			ptr = binary(r[from-1], max, to);
//			printf(" %d %d %d\n", from, to, *ptr);
			i = ptr-r[from-1];
			k = 1;
			while (i-->0) k *= 2;
			D += k;
			from = *ptr;
		} while (*ptr < to);
		printf("%d\n", D);
	}

	return 0;
}

Submission Info

Submission Time
Task E - Tak and Hotels
User k_ashiya
Language C (GCC 5.4.1)
Score 700
Code Size 1846 Byte
Status AC
Exec Time 161 ms
Memory 9728 KB

Compile Error

./Main.c: In function ‘main’:
./Main.c:32:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &N);
  ^
./Main.c:33:20: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
  for (i=0;i<N;i++) scanf("%d", &x[i]);
                    ^
./Main.c:34:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &L, &Q);
  ^
./Main.c:35:20: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
  for (j=0;j<Q;j++) scanf("%d%d", &a[j], &b[j]);
                    ^

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 200 / 200 500 / 500
Status
AC × 1
AC × 14
AC × 27
Set Name Test Cases
Sample example_01.txt
Subtask1 example_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt
All example_01.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt
Case Name Status Exec Time Memory
example_01.txt AC 2 ms 128 KB
subtask1_01.txt AC 2 ms 128 KB
subtask1_02.txt AC 2 ms 128 KB
subtask1_03.txt AC 3 ms 256 KB
subtask1_04.txt AC 3 ms 256 KB
subtask1_05.txt AC 3 ms 256 KB
subtask1_06.txt AC 3 ms 256 KB
subtask1_07.txt AC 3 ms 256 KB
subtask1_08.txt AC 3 ms 256 KB
subtask1_09.txt AC 3 ms 256 KB
subtask1_10.txt AC 3 ms 256 KB
subtask1_11.txt AC 3 ms 256 KB
subtask1_12.txt AC 3 ms 256 KB
subtask1_13.txt AC 3 ms 256 KB
subtask2_01.txt AC 144 ms 9600 KB
subtask2_02.txt AC 158 ms 9728 KB
subtask2_03.txt AC 140 ms 9472 KB
subtask2_04.txt AC 69 ms 6144 KB
subtask2_05.txt AC 92 ms 6400 KB
subtask2_06.txt AC 100 ms 9344 KB
subtask2_07.txt AC 149 ms 9600 KB
subtask2_08.txt AC 161 ms 9728 KB
subtask2_09.txt AC 156 ms 9728 KB
subtask2_10.txt AC 159 ms 9728 KB
subtask2_11.txt AC 149 ms 9088 KB
subtask2_12.txt AC 124 ms 9728 KB
subtask2_13.txt AC 102 ms 9344 KB