Submission #75176801


Source Code Expand

Copy
#include <stdio.h>
#define KI_MAX (1 << 18) /* 262144 */
int ki[KI_MAX * 2 - 1];
void ki_set(int pos, int value) {
pos += KI_MAX - 1;
ki[pos] = value;
do {
pos = (pos - 1) / 2;
ki[pos] = ki[pos * 2 + 1] + ki[pos * 2 + 2];
} while (pos > 0);
}
int ki_get_i(int idx, int ss, int se, int qs, int qe) {
if (qs <= ss && se <= qe) { /* */
return ki[idx];
} else if (qe <= ss || se <= qs) { /* */
return 0;
} else {
int sm = ss + (se - ss) / 2;
return
ki_get_i(idx * 2 + 1, ss, sm, qs, qe) +
ki_get_i(idx * 2 + 2, sm, se, qs, qe);
}
}
int ki_get(int qs, int qe) {
return ki_get_i(0, 0, KI_MAX, qs, qe);
}
int N, Q;
int A[212345];
int query[512345][3];
int main(void) {
int i;
if (scanf("%d%d", &N, &Q) != 2) return 1;
for (i = 1; i <= N; i++) {
if (scanf("%d", &A[i]) != 1) return 1;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

#define KI_MAX (1 << 18) /* 262144 */

int ki[KI_MAX * 2 - 1];

void ki_set(int pos, int value) {
	pos += KI_MAX - 1;
	ki[pos] = value;
	do {
		pos = (pos - 1) / 2;
		ki[pos] = ki[pos * 2 + 1] + ki[pos * 2 + 2];
	} while (pos > 0);
}

int ki_get_i(int idx, int ss, int se, int qs, int qe) {
	if (qs <= ss && se <= qe) { /* セグメントがクエリに完全に含まれる */
		return ki[idx];
	} else if (qe <= ss || se <= qs) { /* 完全に外れている */
		return 0;
	} else {
		int sm = ss + (se - ss) / 2;
		return
			ki_get_i(idx * 2 + 1, ss, sm, qs, qe) +
			ki_get_i(idx * 2 + 2, sm, se, qs, qe);
	}
}

int ki_get(int qs, int qe) {
	return ki_get_i(0, 0, KI_MAX, qs, qe);
}

int N, Q;
int A[212345];
int query[512345][3];

int main(void) {
	int i;
	if (scanf("%d%d", &N, &Q) != 2) return 1;
	for (i = 1; i <= N; i++) {
		if (scanf("%d", &A[i]) != 1) return 1;
	}
	for (i = 0; i < Q; i++) {
		if (scanf("%d%d", &query[i][0], &query[i][1]) != 2) return 1;
		if (query[i][0] == 2) {
			if (scanf("%d", &query[i][2]) != 1) return 1;
		}
	}

	for (i = 1; i <= N; i++) {
		ki_set(i, A[i]);
	}
	for (i = 0; i < Q; i++) {
		if (query[i][0] == 2) {
			printf("%d\n", ki_get(query[i][1], query[i][2] + 1));
		} else {
			int x = query[i][1];
			int t = A[x];
			A[x] = A[x + 1];
			A[x + 1] = t;
			ki_set(x, A[x]);
			ki_set(x + 1, A[x + 1]);
		}
	}

	return 0;
}

Submission Info

Submission Time
Task D - Swap and Range Sum
User mikecat
Language C23 (GCC 14.2.0)
Score 400
Code Size 1455 Byte
Status AC
Exec Time 226 ms
Memory 14052 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 2
AC × 29
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 02_handmade_00.txt, 02_handmade_01.txt, 02_handmade_02.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 0 ms 1784 KiB
00_sample_01.txt AC 0 ms 1792 KiB
01_random_00.txt AC 226 ms 13036 KiB
01_random_01.txt AC 224 ms 12764 KiB
01_random_02.txt AC 207 ms 12128 KiB
01_random_03.txt AC 181 ms 11044 KiB
01_random_04.txt AC 173 ms 11212 KiB
01_random_05.txt AC 157 ms 10444 KiB
01_random_06.txt AC 141 ms 10000 KiB
01_random_07.txt AC 133 ms 9976 KiB
01_random_08.txt AC 115 ms 9776 KiB
01_random_09.txt AC 99 ms 9776 KiB
01_random_10.txt AC 77 ms 9312 KiB
01_random_11.txt AC 192 ms 13860 KiB
01_random_12.txt AC 182 ms 13380 KiB
01_random_13.txt AC 173 ms 12780 KiB
01_random_14.txt AC 160 ms 12140 KiB
01_random_15.txt AC 152 ms 11740 KiB
01_random_16.txt AC 141 ms 11120 KiB
01_random_17.txt AC 129 ms 10512 KiB
01_random_18.txt AC 119 ms 10164 KiB
01_random_19.txt AC 108 ms 10008 KiB
01_random_20.txt AC 96 ms 9924 KiB
01_random_21.txt AC 85 ms 9904 KiB
01_random_22.txt AC 139 ms 11236 KiB
01_random_23.txt AC 140 ms 11320 KiB
02_handmade_00.txt AC 1 ms 1796 KiB
02_handmade_01.txt AC 0 ms 1716 KiB
02_handmade_02.txt AC 151 ms 14052 KiB


2026-04-23 (Thu)
07:52:24 +09:00