CSES - Datatähti 2024 alku - Results
Submission details
Task:Säähavainnot
Sender:rottis
Submission time:2023-11-07 09:34:08 +0200
Language:Ruby
Status:READY
Result:27
Feedback
groupverdictscore
#1ACCEPTED27.25
Test results
testverdicttimescore
#1ACCEPTED0.10 s4.38details
#2ACCEPTED0.10 s4.13details
#3ACCEPTED0.10 s3details
#4ACCEPTED0.10 s3.13details
#5ACCEPTED0.10 s2.88details
#6ACCEPTED0.10 s3.38details
#7ACCEPTED0.10 s3.13details
#8ACCEPTED0.10 s3.25details

Code

class Day
  attr_accessor :days
  def initialize(days)
    @days = days
  end

  def output(arr, offsets, offsets2)
    op = []
    last = days[-1]
    peak = days[12...24].index(days[12...24].reverse.max) + 12
    peakright = peak
    peakleft = peak
    while peakright < 22
      peakright += 1
      peakleft -= 1
    end
    (1..12).each do |num|
      peakright += 1
      peakleft -= 0.8
      if arr.include?(num)

        if num <= 12
          op << ((((self.days[-num]) + last ) / 2 +-offsets[num - 1]).round(1))
        else
          op << ((self.days[peakleft.floor] + self.days[-(peakright - 23)] + last) / 3 + offsets2[num - 1]).round(1)
          # input << (row[peakleft.floor] + row[-(peakright-12)] + last) / 3
        end
        
        last = op[-1]
        op[-1] = op[-1].to_s
      else
        op << "?"
      end
    end
    puts op.join(" ")
  end
end

count = gets.chomp.to_i
days = []
count.times do
  days << Day.new(gets.chomp.split(" ").map(&:to_f))
end

choose = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
offsets = [-0.07, -0.13, -0.18, -0.22, -0.26, -0.29, -0.31, -0.3, -0.29, -0.26, -0.19, -0.07]
offsets2 = [-0.11, -0.2, -0.3, -0.35, -0.42, -0.37, -0.35, -0.32, -0.3, -0.28, -0.23, -0.15]

days.each do |day|
  day.output(choose, offsets, offsets2)
end

Test details

Test 1

Verdict: ACCEPTED

input
1000
-0.4 -0.1 -0.2 -0.3 -0.4 -0.5 ...

correct output
0.4 0.4 0.5 0.8 0.9 1.1 1.3 1....

user output
0.3 0.4 0.4 0.3 0.2 0.1 0.0 -0...
Truncated

Test 2

Verdict: ACCEPTED

input
1000
2.9 2.9 2.9 2.1 2.6 2 2 2.2 2....

correct output
2.3 1.6 1.5 1.1 1 0.7 0.6 0.8 ...

user output
2.7 2.7 2.7 2.7 2.6 2.5 2.6 2....
Truncated

Test 3

Verdict: ACCEPTED

input
1000
6.6 6 6.4 6 4.6 4.6 4.2 4.3 4....

correct output
10 10.9 10.3 10.1 9.1 7.3 5.7 ...

user output
10.2 9.7 9.1 8.2 7.3 6.2 5.2 4...
Truncated

Test 4

Verdict: ACCEPTED

input
1000
19.4 20.2 19.1 18.9 18.3 17.3 ...

correct output
18 18.2 17 17.5 17.2 16.2 12 8...

user output
17.3 17.5 17.3 16.8 16.0 15.2 ...
Truncated

Test 5

Verdict: ACCEPTED

input
1000
-5.7 -5.8 -5.8 -5.9 -7.1 -6.9 ...

correct output
-4.2 -4.1 -4 -3.8 -3.5 -3.2 -3...

user output
-4.4 -4.4 -4.4 -4.6 -5.2 -5.6 ...
Truncated

Test 6

Verdict: ACCEPTED

input
1000
14.8 14.8 15.4 12.9 11.8 9.7 9...

correct output
11.8 11 11.6 10.8 10.4 10.4 10...

user output
12.7 12.9 12.0 11.7 11.1 10.2 ...
Truncated

Test 7

Verdict: ACCEPTED

input
1000
0.7 1 2 1.4 0.6 -0.4 -0.9 -0.7...

correct output
-1.3 -0.5 -0.6 -1 -3.2 -7.2 -6...

user output
-1.7 -1.7 -1.7 -1.8 -1.9 -2.0 ...
Truncated

Test 8

Verdict: ACCEPTED

input
1000
15.1 15.3 14.9 14.4 14.4 13.7 ...

correct output
15.6 15.9 16 15.2 14.6 14.4 13...

user output
15.1 14.7 14.7 13.7 13.1 12.4 ...
Truncated