Submission #70579329


Source Code Expand

Copy
#include <stdio.h>
#include <inttypes.h>
#define BIT_MAX 312345
int bit_table[BIT_MAX];
void bit_add(int pos, int value) {
pos++;
while (pos <= BIT_MAX) {
bit_table[pos - 1] += value;
pos += pos & (-pos);
}
}
int bit_sum(int pos) {
int sum = 0;
pos++;
while (pos > 0) {
sum += bit_table[pos - 1];
pos -= pos & (-pos);
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <inttypes.h>

#define BIT_MAX 312345

int bit_table[BIT_MAX];

void bit_add(int pos, int value) {
	pos++;
	while (pos <= BIT_MAX) {
		bit_table[pos - 1] += value;
		pos += pos & (-pos);
	}
}

int bit_sum(int pos) {
	int sum = 0;
	pos++;
	while (pos > 0) {
		sum += bit_table[pos - 1];
		pos -= pos & (-pos);
	}
	return sum;
}

int N;
int a[BIT_MAX];

int main(void) {
	int i;
	int64_t ans = 0;
	if (scanf("%d",  &N) != 1) return 1;
	for (i = 0; i < N; i++) {
		if (scanf("%d", &a[i]) != 1) return 1;
	}
	for (i = N - 1; i >= 0; i--) {
		ans += bit_sum(a[i]);
		bit_add(a[i], 1);
	}
	for (i = 0; i < N; i++) {
		printf("%" PRId64 "\n", ans);
		/* 先頭の要素を最後に持っていくので */
		/* 先頭の要素より小さい要素の個数だけ減る */
		ans -= a[i];
		/* 先頭の要素より大きい要素の個数だけ増える */
		ans += N - a[i] - 1;
	}
	return 0;
}

Submission Info

Submission Time
Task F - Shift and Inversions
User mikecat
Language C (gcc 12.2.0)
Score 600
Code Size 964 Byte
Status AC
Exec Time 54 ms
Memory 6284 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 24
Set Name Test Cases
Sample 01_sample.txt, 02_sample.txt
All 01_sample.txt, 02_sample.txt, 03_small.txt, 04_small.txt, 05_small.txt, 06_small.txt, 07_small.txt, 08_small.txt, 09_small.txt, 10_small.txt, 11_small.txt, 12_small.txt, 13_small.txt, 14_small.txt, 15_large.txt, 16_large.txt, 17_large.txt, 18_large.txt, 19_large.txt, 20_large.txt, 21_large.txt, 22_max.txt, 23_max.txt, 24_max.txt
Case Name Status Exec Time Memory
01_sample.txt AC 0 ms 1756 KiB
02_sample.txt AC 0 ms 1656 KiB
03_small.txt AC 0 ms 1680 KiB
04_small.txt AC 0 ms 1660 KiB
05_small.txt AC 0 ms 1772 KiB
06_small.txt AC 0 ms 1636 KiB
07_small.txt AC 0 ms 1772 KiB
08_small.txt AC 0 ms 1740 KiB
09_small.txt AC 0 ms 1776 KiB
10_small.txt AC 0 ms 1740 KiB
11_small.txt AC 0 ms 1776 KiB
12_small.txt AC 0 ms 1660 KiB
13_small.txt AC 0 ms 1768 KiB
14_small.txt AC 0 ms 1772 KiB
15_large.txt AC 17 ms 2428 KiB
16_large.txt AC 23 ms 2904 KiB
17_large.txt AC 13 ms 2356 KiB
18_large.txt AC 16 ms 2528 KiB
19_large.txt AC 23 ms 2812 KiB
20_large.txt AC 7 ms 2080 KiB
21_large.txt AC 3 ms 1776 KiB
22_max.txt AC 54 ms 6284 KiB
23_max.txt AC 43 ms 6124 KiB
24_max.txt AC 43 ms 6244 KiB


2025-11-01 (Sat)
08:39:17 +09:00