Submission #2703277


Source Code Expand

require 'pp'
# IS_DEBUG = true
IS_DEBUG = false
def dputs str
	if(IS_DEBUG)
		puts str
	end
end
def dpp str
	if(IS_DEBUG)
		pp str
	end
end

class BIT
	def initialize(n)
		# holding cells of 1..n
		@cells = Array.new(n+1){0}
		@i_max = n
	end
	def add(i,n)
		if(i <= 0)
			return
		end
		while(i<=@i_max)
			@cells[i] += n
			i += i & -i
		end
	end
	def sum(i)
		if(i > @i_max)
			return
		end
		sum = 0
		while(i>0)
			sum += @cells[i]
			i -= i & -i
		end
		return sum
	end
	# arr : n size array holding values from 1 to n
	def inversion_num(arr)
		sum = 0
		arr.each_with_index{|n,j|
			sum += j-self.sum(arr[j])
			self.add(arr[j],1)
		}
		return sum
	end
end

S=gets.chomp
size = S.size
h = {}
arr = Array.new(S.size)
0.upto(S.size-1){|i|
	h[S[i]].nil? ? h[S[i]]=[i] : h[S[i]] << i
}

dpp h

odds = h.select{|k,v| v.size % 2 != 0}
dpp odds
if(size%2==0 && odds.size > 0 || size%2!=0 && odds.size != 1)
	puts -1
	exit(0)
end
oddkey = odds.keys

rearr = []
ih = {}
h.each{|k,v| if(v.size > 1) then v[0..((v.size)/2-1)].each{|v| rearr << [k,v]} end}

dpp "rearr #{rearr}"

rearrmap = Array.new(size)
rearr = rearr.sort{|kv1,kv2| kv1[1] <=> kv2[1]}

dpp "sorted rearr #{rearr}"

rearr.each_with_index{|kv,i|
	k = kv[0]
	v = kv[1]
	ih[k].nil? ? ih[k]=0 : ih[k]+=1
	puts "kv and i is #{kv} #{i}"
	puts "ih[k] #{ih[k]} ih[k][-v-1] #{ih[k][-v-1]}"
	rearrmap[v] = i+1
	rearrmap[h[k][-ih[k]-1]] = size-i
}
if(!oddkey.empty?)
	oddkey = oddkey[0]
	tmp = odds[oddkey]
	tmpsize = tmp.size
	rearrmap[tmp[tmpsize/2]]=size/2+1
end

dpp rearrmap

bit = BIT.new(size)
puts bit.inversion_num(rearrmap)

Submission Info

Submission Time
Task E - Papple Sort
User kou65536
Language Ruby (2.3.3)
Score 0
Code Size 1687 Byte
Status WA
Exec Time 1386 ms
Memory 36248 KB

Compile Error

./Main.rb:65: warning: ambiguous first argument; put parentheses or a space even after `-' operator
./Main.rb:72: warning: shadowing outer local variable - v
./Main.rb:55: warning: assigned but unused variable - arr

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 800
Status
AC × 1
WA × 2
AC × 17
WA × 33
Set Name Test Cases
Sample s1.txt, s2.txt, s3.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, s1.txt, s2.txt, s3.txt
Case Name Status Exec Time Memory
01.txt WA 1340 ms 34968 KB
02.txt WA 1347 ms 34992 KB
03.txt WA 1372 ms 34200 KB
04.txt WA 1362 ms 34840 KB
05.txt WA 1355 ms 34840 KB
06.txt WA 1346 ms 34840 KB
07.txt WA 1364 ms 36248 KB
08.txt WA 1355 ms 34840 KB
09.txt WA 1344 ms 34840 KB
10.txt WA 1386 ms 34840 KB
11.txt AC 109 ms 6908 KB
12.txt AC 112 ms 6780 KB
13.txt AC 108 ms 6780 KB
14.txt AC 109 ms 6908 KB
15.txt WA 1297 ms 33436 KB
16.txt WA 1288 ms 33436 KB
17.txt WA 1328 ms 33280 KB
18.txt WA 1322 ms 33284 KB
19.txt WA 1310 ms 33208 KB
20.txt AC 107 ms 5984 KB
21.txt WA 1307 ms 33276 KB
22.txt WA 1327 ms 33276 KB
23.txt WA 1300 ms 33016 KB
24.txt AC 104 ms 6008 KB
25.txt WA 1290 ms 35584 KB
26.txt WA 1289 ms 33532 KB
27.txt WA 1310 ms 32916 KB
28.txt WA 1302 ms 33416 KB
29.txt WA 1311 ms 32988 KB
30.txt AC 107 ms 6132 KB
31.txt WA 1320 ms 32976 KB
32.txt AC 104 ms 6012 KB
33.txt WA 1311 ms 32776 KB
34.txt AC 104 ms 6008 KB
35.txt WA 1316 ms 33392 KB
36.txt AC 104 ms 6008 KB
37.txt AC 107 ms 6064 KB
38.txt AC 108 ms 6004 KB
39.txt WA 1328 ms 33240 KB
40.txt AC 106 ms 6004 KB
41.txt AC 11 ms 2044 KB
42.txt AC 11 ms 2044 KB
43.txt WA 11 ms 2044 KB
44.txt WA 11 ms 2044 KB
45.txt AC 11 ms 2044 KB
46.txt WA 11 ms 2044 KB
47.txt WA 11 ms 2044 KB
s1.txt WA 11 ms 2044 KB
s2.txt WA 11 ms 2044 KB
s3.txt AC 11 ms 2044 KB