| Task: | Järjestys |
| Sender: | katsotkos NaN |
| Submission time: | 2016-10-16 22:01:21 +0300 |
| Language: | Python3 |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 19 |
| #2 | ACCEPTED | 37 |
| #3 | ACCEPTED | 44 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | 1 | details |
| #2 | ACCEPTED | 0.06 s | 2 | details |
| #3 | ACCEPTED | 1.11 s | 3 | details |
Code
n = int(input())
t = [int(i) for i in input().split(" ")]
pairs = zip(t, list(range(1, n+1)))
order = list(zip(*sorted(pairs)))[1]
BIT = [0]*(n+1)
def add(pos,val):
while pos <=n+1:
BIT[pos]+=val
pos+=(pos&-pos)
def get(pos):
ans=0
while pos > 0:
ans+=BIT[pos]
pos-=(pos&-pos)
return ans;
adjust = [0]*n
for i in range(n):
adjust[i]=i-get(t[i])
add(t[i],1)
res = ""
m = 0
for x in reversed(order):
a = x-adjust[x-1]
if (a > 1):
res += str(a-1) +" "+ str(a) +" "
m += 2
if (n > 1):
res += str(n) +" "+ str(n-1) +" "
m += 2
n -= 1
print(m)
print(res[:-1])
Test details
Test 1
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 10 9 3 4 7 6 5 10 2 8 1 |
| correct output |
|---|
| 32 10 10 9 10 9 8 7 9 4 2 1 4 5 2... |
| user output |
|---|
| 30 6 7 10 9 9 8 6 7 8 7 2 3 7 6 2... |
Test 2
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 1000 650 716 982 41 133 1000 876 92... |
| correct output |
|---|
| 3984 207 207 206 207 128 127 126 12... |
| user output |
|---|
| 3988 5 6 1000 999 95 96 999 998 129... |
Test 3
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 100000 94703 47808 62366 31885 7091 8... |
| correct output |
|---|
| 399956 98676 98676 98675 98676 62994 ... |
| user output |
|---|
| 399964 35854 35855 100000 99999 3259 ... |
