This repository has been archived on 2022-01-12. You can view files and clone it, but cannot push or open issues or pull requests.
USACO-Demo/outofplace.py
2020-08-08 21:15:47 -05:00

75 lines
1.9 KiB
Python

heights = []
with open("outofplace.in", "r") as fin:
L = list(fin)
N = int(L[0])
for i in range(0, N):
heights.append(int(L[i+1]))
# print(heights)
# step 1: find cow that's out of order
pos = -1
for i in range(0, N-1):
if heights[i] > heights[i+1]:
if i+2 >= N or heights[i] <= heights[i+2]:
print(i+1, "is the bad cow!")
pos = i+1
correct_pos = -1
for j in range(1, pos+1).reverse():
if (heights[j-1] <= heights[pos] <= heights[j]):
# we found a good position!
correct_pos = j
break
print(correct_pos)
count = 0
for j in range(pos, correct_pos):
if heights[j-1] == heights[j]: count = count+1
break
else:
print(i, "is the bad cow!")
pos = i
correct_pos = -1
for j in range(pos, N):
if (heights[j] <= heights[pos] <= heights[j+1]):
# we found a good position!
correct_pos = j+1
break
count = 0
for j in range(pos, correct_pos):
if heights[j] == heights[j+1]: count = count+1
break
# we didn't find a cow out of order :)
if pos == -1:
with open("outofplace.out", "w") as fout:
fout.write(str(0))
else:
with open("outofplace.out", "w") as fout:
fout.write(str(count))
# # step 2: find the correct position
# correct_pos = -1
# for i in range(0, N-1):
# if (heights[i] <= pos <= heights[i+1]):
# # we found a good position!
# correct_pos = i+1
# # step 3: count number of positions in between
# # remember to count cows of the same height exactly once!
# if correct_pos < pos:
# count = 0
# for i in range(pos-1, correct_pos-1):