Submission #1654672
Source Code Expand
require 'set' n = gets.chomp.to_i s1 = gets.chomp s2 = gets.chomp letters = ("A".."Z").to_a atoi = [letters, (0...26).to_a].transpose.to_h code = Struct.new("Code", :letter, :index, :number) @a = Array.new(26) b = Array.new(26, false) # Union Find @par = (0...26).to_a @rank = Array.new(26, 0) def find(x) if @par[x] == x return x else @par[x] = find(@par[x]) return @par[x] end end def unite(x, y) xx = x yy = y x = find(x) y = find(y) if x == y return end if @rank[x] < @rank[y] @par[x] = y else @par[y] = x if @rank[x] == @rank[y] @rank[x] += 1 end end @a[xx].number = @a[yy].number = [@a[xx].number, @a[yy].number].max @a[xx].index = @a[yy].index = (@a[xx].index + @a[yy].index) end def same(x, y) return find(x) == find(y) end n.times do |i| c1 = s1[i] c2 = s2[i] if letters.include?(c1) && letters.include?(c2) b[atoi[c1]] = true b[atoi[c2]] = true if @a[atoi[c1]].nil? @a[atoi[c1]] = code.new(c1, Set[i], -1) else @a[atoi[c1]].index += Set[i] end if @a[atoi[c2]].nil? @a[atoi[c2]] = code.new(c2, Set[i], -1) else @a[atoi[c2]].index += Set[i] end elsif letters.include?(c1) b[atoi[c1]] = true if @a[atoi[c1]].nil? @a[atoi[c1]] = code.new(c1, Set[i], c2.to_i) else @a[atoi[c1]].index += Set[i] @a[atoi[c1]].number = c2.to_i end elsif letters.include?(c2) b[atoi[c2]] = true if @a[atoi[c2]].nil? @a[atoi[c2]] = code.new(c2, Set[i], c1.to_i) else @a[atoi[c2]].index += Set[i] @a[atoi[c2]].number = c1.to_i end end end b = (0...26).select{|i| b[i]} b.combination(2) do |i, j| c1 = @a[i] c2 = @a[j] if c1.index.intersect?(c2.index) unite(i, j) end end roots = b.map{|i| @par[i]}.uniq ans = 1 roots.uniq.each do |i| if @a[i].number == -1 if @a[i].index.min == 0 ans *= 9 else ans *= 10 end end end puts ans
Submission Info
Submission Time | |
---|---|
Task | B - 大事な数なのでZ回書きまLた。 |
User | wtnk0812 |
Language | Ruby (2.3.3) |
Score | 100 |
Code Size | 2067 Byte |
Status | AC |
Exec Time | 11 ms |
Memory | 2044 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 30 / 30 | 70 / 70 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt |
Subtask1 | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask1-21.txt, subtask1-22.txt, subtask1-23.txt, subtask1-24.txt, subtask1-25.txt, subtask1-26.txt |
Subtask2 | subtask0-sample01.txt, subtask0-sample02.txt, subtask0-sample03.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask1-16.txt, subtask1-17.txt, subtask1-18.txt, subtask1-19.txt, subtask1-20.txt, subtask1-21.txt, subtask1-22.txt, subtask1-23.txt, subtask1-24.txt, subtask1-25.txt, subtask1-26.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt, subtask2-16.txt, subtask2-17.txt, subtask2-18.txt, subtask2-19.txt, subtask2-20.txt, subtask2-21.txt, subtask2-22.txt, subtask2-23.txt, subtask2-24.txt, subtask2-25.txt, subtask2-26.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask0-sample01.txt | AC | 10 ms | 1916 KB |
subtask0-sample02.txt | AC | 10 ms | 1916 KB |
subtask0-sample03.txt | AC | 10 ms | 1916 KB |
subtask1-01.txt | AC | 10 ms | 1916 KB |
subtask1-02.txt | AC | 10 ms | 1916 KB |
subtask1-03.txt | AC | 10 ms | 1916 KB |
subtask1-04.txt | AC | 10 ms | 1916 KB |
subtask1-05.txt | AC | 10 ms | 1916 KB |
subtask1-06.txt | AC | 10 ms | 1916 KB |
subtask1-07.txt | AC | 10 ms | 1916 KB |
subtask1-08.txt | AC | 10 ms | 1916 KB |
subtask1-09.txt | AC | 10 ms | 1916 KB |
subtask1-10.txt | AC | 10 ms | 1916 KB |
subtask1-11.txt | AC | 10 ms | 1916 KB |
subtask1-12.txt | AC | 9 ms | 1916 KB |
subtask1-13.txt | AC | 10 ms | 1916 KB |
subtask1-14.txt | AC | 10 ms | 1916 KB |
subtask1-15.txt | AC | 9 ms | 1916 KB |
subtask1-16.txt | AC | 10 ms | 1916 KB |
subtask1-17.txt | AC | 10 ms | 1916 KB |
subtask1-18.txt | AC | 10 ms | 1916 KB |
subtask1-19.txt | AC | 10 ms | 1916 KB |
subtask1-20.txt | AC | 10 ms | 1916 KB |
subtask1-21.txt | AC | 10 ms | 1916 KB |
subtask1-22.txt | AC | 10 ms | 1916 KB |
subtask1-23.txt | AC | 10 ms | 1916 KB |
subtask1-24.txt | AC | 10 ms | 1916 KB |
subtask1-25.txt | AC | 10 ms | 1916 KB |
subtask1-26.txt | AC | 10 ms | 1916 KB |
subtask2-01.txt | AC | 10 ms | 1916 KB |
subtask2-02.txt | AC | 10 ms | 1916 KB |
subtask2-03.txt | AC | 10 ms | 1916 KB |
subtask2-04.txt | AC | 10 ms | 1916 KB |
subtask2-05.txt | AC | 10 ms | 1916 KB |
subtask2-06.txt | AC | 10 ms | 1916 KB |
subtask2-07.txt | AC | 10 ms | 1916 KB |
subtask2-08.txt | AC | 10 ms | 1916 KB |
subtask2-09.txt | AC | 10 ms | 1916 KB |
subtask2-10.txt | AC | 10 ms | 1916 KB |
subtask2-11.txt | AC | 10 ms | 1916 KB |
subtask2-12.txt | AC | 10 ms | 1916 KB |
subtask2-13.txt | AC | 10 ms | 1916 KB |
subtask2-14.txt | AC | 10 ms | 1916 KB |
subtask2-15.txt | AC | 10 ms | 1916 KB |
subtask2-16.txt | AC | 10 ms | 1916 KB |
subtask2-17.txt | AC | 10 ms | 1916 KB |
subtask2-18.txt | AC | 10 ms | 1916 KB |
subtask2-19.txt | AC | 10 ms | 1916 KB |
subtask2-20.txt | AC | 10 ms | 1916 KB |
subtask2-21.txt | AC | 10 ms | 1916 KB |
subtask2-22.txt | AC | 10 ms | 1916 KB |
subtask2-23.txt | AC | 10 ms | 1916 KB |
subtask2-24.txt | AC | 10 ms | 1916 KB |
subtask2-25.txt | AC | 9 ms | 1916 KB |
subtask2-26.txt | AC | 11 ms | 2044 KB |