fork download
  1. import sys
  2. from bisect import bisect_left as lower_bound
  3. from bisect import bisect_right as upper_bound
  4.  
  5. get_int = [int(x) for x in sys.stdin.buffer.read().split()]
  6.  
  7. n, k = get_int[0], get_int[1]
  8. rows: list[list[int]] = [get_int[2 + i * n: 2 + (i + 1) * n] for i in range(k)]
  9.  
  10.  
  11. class FenwickTree:
  12. def __init__(self, x):
  13. bit = self.bit = list(x)
  14. size = self.size = len(bit)
  15. for i in range(size):
  16. j = i | (i + 1)
  17. if j < size:
  18. bit[j] += bit[i]
  19.  
  20. def update(self, idx, x):
  21. """updates bit[idx] += x"""
  22. while idx < self.size:
  23. self.bit[idx] += x
  24. idx |= idx + 1
  25.  
  26. def __call__(self, end):
  27. """calc sum(bit[:end])"""
  28. x = 0
  29. while end:
  30. x += self.bit[end - 1]
  31. end &= end - 1
  32. return x
  33.  
  34. def find_kth(self, k):
  35. """Find largest idx such that sum(bit[:idx]) <= k"""
  36. idx = -1
  37. for d in reversed(range(self.size.bit_length())):
  38. right_idx = idx + (1 << d)
  39. if right_idx < self.size and self.bit[right_idx] <= k:
  40. idx = right_idx
  41. k -= self.bit[idx]
  42. return idx + 1, k
  43.  
  44. class SortedList:
  45. block_size = 700
  46.  
  47. def __init__(self, iterable=()):
  48. self.macro = []
  49. self.micros = [[]]
  50. self.micro_size = [0]
  51. self.fenwick = FenwickTree([0])
  52. self.size = 0
  53. for item in iterable:
  54. self.insert(item)
  55.  
  56. def insert(self, x):
  57. i = lower_bound(self.macro, x)
  58. j = upper_bound(self.micros[i], x)
  59. self.micros[i].insert(j, x)
  60. self.size += 1
  61. self.micro_size[i] += 1
  62. self.fenwick.update(i, 1)
  63. if len(self.micros[i]) >= self.block_size:
  64. self.micros[i:i + 1] = self.micros[i][:self.block_size >> 1], self.micros[i][self.block_size >> 1:]
  65. self.micro_size[i:i + 1] = self.block_size >> 1, self.block_size >> 1
  66. self.fenwick = FenwickTree(self.micro_size)
  67. self.macro.insert(i, self.micros[i + 1][0])
  68.  
  69. def pop(self, k=-1):
  70. i, j = self._find_kth(k)
  71. self.size -= 1
  72. self.micro_size[i] -= 1
  73. self.fenwick.update(i, -1)
  74. return self.micros[i].pop(j)
  75.  
  76. def __getitem__(self, k):
  77. i, j = self._find_kth(k)
  78. return self.micros[i][j]
  79.  
  80. def count(self, x):
  81. return self.upper_bound(x) - self.lower_bound(x)
  82.  
  83. def __contains__(self, x):
  84. return self.count(x) > 0
  85.  
  86. def lower_bound(self, x):
  87. i = lower_bound(self.macro, x)
  88. return self.fenwick(i) + lower_bound(self.micros[i], x)
  89.  
  90. def upper_bound(self, x):
  91. i = upper_bound(self.macro, x)
  92. return self.fenwick(i) + upper_bound(self.micros[i], x)
  93.  
  94. def _find_kth(self, k):
  95. return self.fenwick.find_kth(k + self.size if k < 0 else k)
  96.  
  97. def __len__(self):
  98. return self.size
  99.  
  100. def __iter__(self):
  101. return (x for micro in self.micros for x in micro)
  102.  
  103. def __repr__(self):
  104. return str(list(self))
  105.  
  106.  
  107. worst: int = -1
  108. worst_idx: int = -1
  109. for row in range(k):
  110. curr: int = 0
  111. sorted_list: SortedList = SortedList([rows[row][0]])
  112. for soldier_idx in range(1, n):
  113. sorted_list.insert(rows[row][soldier_idx])
  114. soldier_idx_in_sorted_list: int = sorted_list.lower_bound(rows[row][soldier_idx])
  115. curr += len(sorted_list) - 1 - soldier_idx_in_sorted_list
  116. if curr > worst:
  117. worst = curr
  118. worst_idx = row
  119.  
  120. print(worst_idx + 1)
  121.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: '.' expected
import sys
          ^
Main.java:2: error: ';' expected
from bisect import bisect_left as lower_bound
    ^
Main.java:2: error: '.' expected
from bisect import bisect_left as lower_bound
                              ^
Main.java:2: error: ';' expected
from bisect import bisect_left as lower_bound
                                 ^
Main.java:3: error: '.' expected
from bisect import bisect_right as upper_bound
                               ^
Main.java:3: error: ';' expected
from bisect import bisect_right as upper_bound
                                  ^
Main.java:11: error: '{' expected
class FenwickTree:
                 ^
Main.java:17: error: > expected
            if j < size:
                       ^
Main.java:18: error: ']' expected
                bit[j] += bit[i]
                    ^
Main.java:18: error: ';' expected
                bit[j] += bit[i]
                     ^
Main.java:18: error: ']' expected
                bit[j] += bit[i]
                              ^
Main.java:18: error: ';' expected
                bit[j] += bit[i]
                               ^
Main.java:20: error: <identifier> expected
    def update(self, idx, x):
                   ^
Main.java:20: error: <identifier> expected
    def update(self, idx, x):
                        ^
Main.java:20: error: <identifier> expected
    def update(self, idx, x):
                           ^
Main.java:20: error: ';' expected
    def update(self, idx, x):
                            ^
Main.java:22: error: > expected
        while idx < self.size:
                        ^
Main.java:22: error: <identifier> expected
        while idx < self.size:
                             ^
Main.java:23: error: ']' expected
            self.bit[idx] += x
                     ^
Main.java:23: error: ';' expected
            self.bit[idx] += x
                        ^
Main.java:24: error: ';' expected
            idx |= idx + 1
               ^
Main.java:24: error: <identifier> expected
            idx |= idx + 1
                      ^
Main.java:26: error: <identifier> expected
    def __call__(self, end):
                     ^
Main.java:26: error: <identifier> expected
    def __call__(self, end):
                          ^
Main.java:26: error: ';' expected
    def __call__(self, end):
                           ^
Main.java:39: error: > expected
            if right_idx < self.size and self.bit[right_idx] <= k:
                               ^
Main.java:39: error: ';' expected
            if right_idx < self.size and self.bit[right_idx] <= k:
                                        ^
Main.java:39: error: ']' expected
            if right_idx < self.size and self.bit[right_idx] <= k:
                                                  ^
Main.java:39: error: ';' expected
            if right_idx < self.size and self.bit[right_idx] <= k:
                                                           ^
Main.java:39: error: <identifier> expected
            if right_idx < self.size and self.bit[right_idx] <= k:
                                                                 ^
Main.java:40: error: <identifier> expected
                idx = right_idx
                   ^
Main.java:40: error: ';' expected
                idx = right_idx
                               ^
Main.java:41: error: <identifier> expected
                k -= self.bit[idx]
                                  ^
Main.java:42: error: <identifier> expected
        return idx + 1, k
                  ^
Main.java:42: error: <identifier> expected
        return idx + 1, k
                         ^
Main.java:44: error: '{' expected
class SortedList:
                ^
Main.java:95: error: <identifier> expected
        return self.fenwick.find_kth(k + self.size if k < 0 else k)
                                                         ^
Main.java:95: error: illegal start of type
        return self.fenwick.find_kth(k + self.size if k < 0 else k)
                                                          ^
Main.java:95: error: <identifier> expected
        return self.fenwick.find_kth(k + self.size if k < 0 else k)
                                                                  ^
Main.java:97: error: <identifier> expected
    def __len__(self):
                    ^
Main.java:97: error: ';' expected
    def __len__(self):
                     ^
Main.java:107: error: <identifier> expected
worst: int = -1
          ^
Main.java:107: error: ';' expected
worst: int = -1
               ^
Main.java:108: error: <identifier> expected
worst_idx: int = -1
         ^
Main.java:108: error: <identifier> expected
worst_idx: int = -1
              ^
Main.java:108: error: ';' expected
worst_idx: int = -1
                   ^
Main.java:109: error: ';' expected
for row in range(k):
          ^
Main.java:109: error: invalid method declaration; return type required
for row in range(k):
           ^
Main.java:109: error: <identifier> expected
for row in range(k):
                  ^
Main.java:109: error: ';' expected
for row in range(k):
                   ^
Main.java:110: error: <identifier> expected
    curr: int = 0
             ^
Main.java:110: error: ';' expected
    curr: int = 0
                 ^
Main.java:111: error: <identifier> expected
    sorted_list: SortedList = SortedList([rows[row][0]])
               ^
Main.java:111: error: <identifier> expected
    sorted_list: SortedList = SortedList([rows[row][0]])
                           ^
Main.java:111: error: illegal start of expression
    sorted_list: SortedList = SortedList([rows[row][0]])
                                         ^
Main.java:111: error: ';' expected
    sorted_list: SortedList = SortedList([rows[row][0]])
                                                       ^
Main.java:112: error: ';' expected
    for soldier_idx in range(1, n):
                      ^
Main.java:112: error: invalid method declaration; return type required
    for soldier_idx in range(1, n):
                       ^
Main.java:112: error: illegal start of type
    for soldier_idx in range(1, n):
                             ^
Main.java:114: error: <identifier> expected
        soldier_idx_in_sorted_list: int = sorted_list.lower_bound(rows[row][soldier_idx])
                                       ^
Main.java:114: error: ';' expected
        soldier_idx_in_sorted_list: int = sorted_list.lower_bound(rows[row][soldier_idx])
                                                                                         ^
Main.java:115: error: <identifier> expected
        curr += len(sorted_list) - 1 - soldier_idx_in_sorted_list
                                                                 ^
Main.java:116: error: <identifier> expected
    if curr > worst:
           ^
Main.java:116: error: <identifier> expected
    if curr > worst:
                   ^
Main.java:117: error: <identifier> expected
        worst = curr
             ^
Main.java:117: error: ';' expected
        worst = curr
                    ^
Main.java:118: error: <identifier> expected
        worst_idx = row
                 ^
Main.java:118: error: ';' expected
        worst_idx = row
                       ^
Main.java:120: error: invalid method declaration; return type required
print(worst_idx + 1)
^
Main.java:120: error: <identifier> expected
print(worst_idx + 1)
               ^
Main.java:120: error: reached end of file while parsing
print(worst_idx + 1)
                    ^
71 errors
stdout
Standard output is empty