Submission #70579329
Source Code Expand
Copy
#include <stdio.h>#include <inttypes.h>#define BIT_MAX 312345int 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);
#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 |
|
|
| 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 |