Submission #3388420


Source Code Expand

import strutils
import sequtils
import algorithm
import math
import queues
import tables
import sets
import future

const INF* = int(1e18 + 373)

proc readSeq*(): seq[string] = stdin.readLine().strip().split()
proc readSeq*(n: Natural): seq[string] =
  result = newSeq[string](n)
  for i in 0..<n:
    result[i] = stdin.readLine().strip()

proc readInt1*(): int = readSeq().map(parseInt)[0]
proc readInt2*(): (int, int) =
  let a = readSeq().map(parseInt)
  return (a[0], a[1])
proc readInt3*(): (int, int, int) =
  let a = readSeq().map(parseInt)
  return (a[0], a[1], a[2])
proc readInt4*(): (int, int, int, int) =
  let a = readSeq().map(parseInt)
  return (a[0], a[1], a[2], a[3])

type seq2*[T] = seq[seq[T]]
proc newSeq2*[T](n1, n2: Natural): seq2[T] = newSeqWith(n1, newSeq[T](n2))

#------------------------------------------------------------------------------#
type Deque[T] = object
  a: seq[T]
  s: int
  t: int

proc initDeque[T](init: int = 16): Deque[T] =
  result.a = newSeq[T](init)
  result.s = 0
  result.t = 0

proc len[T](this: Deque[T]): int =
  (this.t - this.s + this.a.len()) mod this.a.len()

proc ensureCapacity[T](this: var Deque[T]) =
  let n = this.len()

  if n < this.a.len() - 1:
    return

  var aa = newSeq[int](this.a.len() * 2)
  for i in 0..<n:
    aa[i] = this.a[(this.s + i) mod this.a.len()]

  this.a = aa
  this.s = 0
  this.t = n

proc addFirst[T](this: var Deque[T]; e: T) =
  this.ensureCapacity()
  this.s = (this.s - 1 + this.a.len()) mod this.a.len()
  this.a[this.s] = e

proc addLast[T](this: var Deque[T]; e: T) =
  this.ensureCapacity()
  this.a[this.t] = e
  this.t = (this.t + 1) mod this.a.len()

proc popFirst[T](this: var Deque[T]): T =
  if this.len() <= 0:
    raise newException(IndexError, "Deque Is Empty")
  let res = this.a[this.s]
  this.s = (this.s + 1) mod this.a.len()
  return res

proc popLast[T](this: var Deque[T]): T =
  if this.len() <= 0:
    raise newException(IndexError, "Deque Is Empty")
  this.t = (this.t - 1 + this.a.len()) mod this.a.len()
  return this.a[this.t]

proc peekFirst[T](this: Deque[T]): T =
  if this.len() <= 0:
    raise newException(IndexError, "Deque Is Empty")
  return this.a[this.s]

proc peekLast[T](this: Deque[T]): T =
  if this.len() <= 0:
    raise newException(IndexError, "Deque Is Empty")
  return this.a[(this.t - 1 + this.a.len()) mod this.a.len()]

#------------------------------------------------------------------------------#

# [i - w, i)の範囲の最大値
proc buildSlideMaximum(a: seq[int]; w: int): seq[int] =
  let n = a.len()
  var ans = newSeq[int](n + 1)

  var deq = initDeque[int]()
  for i in 1..n:
    while deq.len() > 0 and a[deq.peekLast()] <= a[i - 1]:
      discard deq.popLast()
    deq.addLast(i - 1)

    while deq.len() > 0 and deq.peekFirst() < i - w:
      discard deq.popFirst()

    ans[i] = a[deq.peekFirst()]

  return ans

proc main() =
  let (n, m, k) = readInt3()
  let a = readSeq().map(parseInt)

  var dp = newSeq2[int](k, n)
  for i in 1..<k:
    dp[i][0] = -INF

  for i in 1..<k:
    for j in 0..<n:
      if dp[i - 1][j] == -INF:
        continue
      dp[i - 1][j] += i * a[j]

    dp[i] = dp[i - 1].buildSlideMaximum(m)

  var ans = -INF
  for j in 0..<n:
    ans = max(ans, dp[k - 1][j] + k * a[j])
  echo ans

main()

Submission Info

Submission Time
Task A - Struck Out
User somq14
Language Nim (0.13.0)
Score 0
Code Size 3415 Byte
Status WA
Exec Time 2144 ms
Memory 604068 KB

Compile Error

Hint: system [Processing]
Hint: Main [Processing]
Hint: strutils [Processing]
Hint: parseutils [Processing]
Hint: sequtils [Processing]
Hint: algorithm [Processing]
Hint: math [Processing]
Hint: times [Processing]
Hint: queues [Processing]
Hint: tables [Processing]
Hint: hashes [Processing]
Hint: etcpriv [Processing]
Hint: sets [Processing]
Hint: os [Processing]
Hint: posix [Processing]
Hint: future [Processing]
Hint: macros [Processing]
Main.nim(60, 6) Hint: 'Main.addFirst(this: var Deque[addFirst.T], e: T)' is declared but not used [XDeclaredButNotUsed]
Hint:  [Link]
Hint: operation successful (24615 lines compiled; 2.232 sec total; 24.245MB; Release Build) [SuccessX]

Judge Result

Set Name Sample subtask1 subtask2 subtask3 All
Score / Max Score 0 / 0 0 / 100 0 / 200 0 / 300 0 / 100
Status
AC × 3
AC × 6
WA × 2
TLE × 2
AC × 10
WA × 2
AC × 19
WA × 2
AC × 28
WA × 4
TLE × 14
Set Name Test Cases
Sample sample_1.txt, sample_2.txt, sample_3.txt
subtask1 sample_2.txt, subtask_1_1.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
subtask2 sample_1.txt, sample_2.txt, sample_3.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt
subtask3 sample_1.txt, sample_2.txt, sample_3.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt, subtask_3_9.txt
All sample_1.txt, sample_2.txt, sample_3.txt, sample_1.txt, sample_2.txt, sample_3.txt, subtask_1_1.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt, subtask_2_1.txt, subtask_2_2.txt, subtask_2_3.txt, subtask_2_4.txt, subtask_2_5.txt, subtask_2_6.txt, subtask_2_7.txt, subtask_2_8.txt, subtask_2_9.txt, subtask_3_1.txt, subtask_3_2.txt, subtask_3_3.txt, subtask_3_4.txt, subtask_3_5.txt, subtask_3_6.txt, subtask_3_7.txt, subtask_3_8.txt, subtask_3_9.txt, subtask_4_1.txt, subtask_4_10.txt, subtask_4_11.txt, subtask_4_12.txt, subtask_4_13.txt, subtask_4_2.txt, subtask_4_3.txt, subtask_4_4.txt, subtask_4_5.txt, subtask_4_6.txt, subtask_4_7.txt, subtask_4_8.txt, subtask_4_9.txt
Case Name Status Exec Time Memory
sample_1.txt AC 1 ms 256 KB
sample_2.txt AC 1 ms 256 KB
sample_3.txt AC 1 ms 256 KB
subtask_1_1.txt AC 1 ms 508 KB
subtask_1_2.txt AC 531 ms 67696 KB
subtask_1_3.txt TLE 2142 ms 603976 KB
subtask_1_4.txt AC 29 ms 4604 KB
subtask_1_5.txt AC 92 ms 18336 KB
subtask_1_6.txt WA 10 ms 2300 KB
subtask_1_7.txt AC 1751 ms 302936 KB
subtask_1_8.txt TLE 2142 ms 604016 KB
subtask_1_9.txt WA 31 ms 5884 KB
subtask_2_1.txt AC 2 ms 764 KB
subtask_2_2.txt AC 1 ms 508 KB
subtask_2_3.txt AC 2 ms 636 KB
subtask_2_4.txt AC 2 ms 508 KB
subtask_2_5.txt WA 1 ms 380 KB
subtask_2_6.txt WA 1 ms 380 KB
subtask_2_7.txt AC 2 ms 764 KB
subtask_2_8.txt AC 2 ms 764 KB
subtask_2_9.txt AC 2 ms 636 KB
subtask_3_1.txt AC 528 ms 77164 KB
subtask_3_2.txt AC 529 ms 77128 KB
subtask_3_3.txt AC 510 ms 77088 KB
subtask_3_4.txt AC 425 ms 71140 KB
subtask_3_5.txt AC 27 ms 4604 KB
subtask_3_6.txt AC 268 ms 39764 KB
subtask_3_7.txt AC 529 ms 77052 KB
subtask_3_8.txt AC 53 ms 8956 KB
subtask_3_9.txt AC 531 ms 77052 KB
subtask_4_1.txt TLE 2142 ms 604028 KB
subtask_4_10.txt TLE 2142 ms 603972 KB
subtask_4_11.txt TLE 2143 ms 603972 KB
subtask_4_12.txt TLE 2142 ms 604032 KB
subtask_4_13.txt TLE 2142 ms 604068 KB
subtask_4_2.txt TLE 2143 ms 604024 KB
subtask_4_3.txt TLE 2142 ms 604016 KB
subtask_4_4.txt TLE 2143 ms 604068 KB
subtask_4_5.txt TLE 2139 ms 558460 KB
subtask_4_6.txt AC 410 ms 74732 KB
subtask_4_7.txt TLE 2127 ms 302920 KB
subtask_4_8.txt TLE 2144 ms 594324 KB
subtask_4_9.txt TLE 2126 ms 302944 KB