Submission #31558087


Source Code Expand

#include <stdio.h>

typedef struct {
	int key, id;
} data;

typedef struct {
	data obj[200001];
	int size;
} min_heap;

void push(min_heap* h, data x)
{
	int i = ++(h->size), j = i >> 1;
	data tmp;
	h->obj[i] = x;
	while (j > 0) {
		if (h->obj[i].key < h->obj[j].key) {
			tmp = h->obj[j];
			h->obj[j] = h->obj[i];
			h->obj[i] = tmp;
			i = j;
			j >>= 1;
		} else break;
	}
}

data pop(min_heap* h)
{
	int i = 1, j = 2;
	data output = h->obj[1], tmp;
	h->obj[1] = h->obj[(h->size)--];
	while (j <= h->size) {
		if (j < h->size && h->obj[j^1].key < h->obj[j].key) j ^= 1;
		if (h->obj[j].key < h->obj[i].key) {
			tmp = h->obj[j];
			h->obj[j] = h->obj[i];
			h->obj[i] = tmp;
			i = j;
			j <<= 1;
		} else break;
	}
	return output;
}

int main()
{
	int i, N, P[200001];
	scanf("%d", &N);
	for (i = 1; i <= N; i++) scanf("%d", &(P[i]));
	
	long long ans = 0;
	min_heap h;
	data d;
	h.size = 0;
	for (i = 1; i <= N; i++) {
		if (h.size > 0 && h.obj[1].key < P[i]) {
			d = pop(&h);
			ans += P[i] - d.key;
			if (d.id < 0) {
				d.id = 1;
				push(&h, d);
			}
			d.key = P[i];
			d.id = -1;
			push(&h, d);
		} else {
			d.key = P[i];
			d.id = 1;
			push(&h, d);
		}
	}
	printf("%lld\n", ans);
	fflush(stdout);
	return 0;
}

Submission Info

Submission Time
Task G - Stonks
User ygussany
Language C (GCC 9.2.1)
Score 600
Code Size 1302 Byte
Status AC
Exec Time 50 ms
Memory 4040 KiB

Compile Error

./Main.c: In function ‘main’:
./Main.c:49:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
   49 |  scanf("%d", &N);
      |  ^~~~~~~~~~~~~~~
./Main.c:50:27: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
   50 |  for (i = 1; i <= N; i++) scanf("%d", &(P[i]));
      |                           ^~~~~~~~~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 70
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt
Case Name Status Exec Time Memory
sample_01.txt AC 5 ms 1668 KiB
sample_02.txt AC 1 ms 1652 KiB
sample_03.txt AC 1 ms 1644 KiB
test_01.txt AC 1 ms 1632 KiB
test_02.txt AC 26 ms 2520 KiB
test_03.txt AC 39 ms 3216 KiB
test_04.txt AC 2 ms 1660 KiB
test_05.txt AC 19 ms 2164 KiB
test_06.txt AC 34 ms 3964 KiB
test_07.txt AC 2 ms 1724 KiB
test_08.txt AC 43 ms 2936 KiB
test_09.txt AC 47 ms 3236 KiB
test_10.txt AC 1 ms 1640 KiB
test_11.txt AC 48 ms 3220 KiB
test_12.txt AC 43 ms 3280 KiB
test_13.txt AC 1 ms 1728 KiB
test_14.txt AC 29 ms 3632 KiB
test_15.txt AC 43 ms 3236 KiB
test_16.txt AC 1 ms 1648 KiB
test_17.txt AC 33 ms 2764 KiB
test_18.txt AC 48 ms 3188 KiB
test_19.txt AC 3 ms 1700 KiB
test_20.txt AC 10 ms 2156 KiB
test_21.txt AC 30 ms 3800 KiB
test_22.txt AC 2 ms 1724 KiB
test_23.txt AC 32 ms 2852 KiB
test_24.txt AC 42 ms 3192 KiB
test_25.txt AC 2 ms 1648 KiB
test_26.txt AC 19 ms 2068 KiB
test_27.txt AC 37 ms 4040 KiB
test_28.txt AC 2 ms 1656 KiB
test_29.txt AC 37 ms 2892 KiB
test_30.txt AC 43 ms 3204 KiB
test_31.txt AC 1 ms 1688 KiB
test_32.txt AC 20 ms 2308 KiB
test_33.txt AC 46 ms 3236 KiB
test_34.txt AC 1 ms 1728 KiB
test_35.txt AC 31 ms 3392 KiB
test_36.txt AC 48 ms 3232 KiB
test_37.txt AC 2 ms 1664 KiB
test_38.txt AC 2 ms 1720 KiB
test_39.txt AC 43 ms 3212 KiB
test_40.txt AC 1 ms 1668 KiB
test_41.txt AC 26 ms 3928 KiB
test_42.txt AC 35 ms 3712 KiB
test_43.txt AC 2 ms 1656 KiB
test_44.txt AC 22 ms 2160 KiB
test_45.txt AC 46 ms 3232 KiB
test_46.txt AC 4 ms 1688 KiB
test_47.txt AC 32 ms 2604 KiB
test_48.txt AC 23 ms 4012 KiB
test_49.txt AC 2 ms 1684 KiB
test_50.txt AC 22 ms 2480 KiB
test_51.txt AC 43 ms 3192 KiB
test_52.txt AC 3 ms 1680 KiB
test_53.txt AC 19 ms 2156 KiB
test_54.txt AC 50 ms 3236 KiB
test_55.txt AC 2 ms 1732 KiB
test_56.txt AC 29 ms 2956 KiB
test_57.txt AC 39 ms 3288 KiB
test_58.txt AC 3 ms 1660 KiB
test_59.txt AC 27 ms 2280 KiB
test_60.txt AC 44 ms 3196 KiB
test_61.txt AC 1 ms 1684 KiB
test_62.txt AC 25 ms 3112 KiB
test_63.txt AC 38 ms 3792 KiB
test_64.txt AC 19 ms 3976 KiB
test_65.txt AC 35 ms 4012 KiB
test_66.txt AC 30 ms 3200 KiB
test_67.txt AC 32 ms 3280 KiB