solution F icpc 2018

This commit is contained in:
Xevion
2019-08-24 20:51:10 -05:00
parent ca2b4f1848
commit d791e8bdd9
4 changed files with 45 additions and 1 deletions

View File

@@ -15,7 +15,7 @@ def main():
# Parse inputs
inputs = [list(map(float, open(path).read().split())) for path in inputs]
# Process inputs and print outputs
print('\n'.join(map(lambda item : process(*item), inputs)))
print('\n{}\n'.format('-' * 10).join(map(lambda item : process(*item), inputs)))
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,2 @@
14 2 3
5 6 9 8 5 4 6 5 2 3 6 8 7 4

View File

@@ -0,0 +1,2 @@
14 3 2
5 6 9 8 5 4 6 5 2 3 6 8 7 4

View File

@@ -0,0 +1,40 @@
import os, sys
def process(item):
# Constants and initial values
stocks, (n, m) = item[1], item[0]
peaks, valleys = [], []
possiblePeaks, possibleValleys = range(n, len(stocks) - n), range(m, len(stocks) - m)
# Check all possible peaks
for index in possiblePeaks:
isPeak = True
for i in range(1, n + 1):
if not stocks[index - i] < stocks[index] or not stocks[index] > stocks[index + i]:
isPeak = False
if isPeak:
peaks.append(index)
print(peaks)
# Check all possible valleys
for index in possibleValleys:
isValley = True
for i in range(1, m + 1):
if not stocks[index - i] > stocks[index] or not stocks[index] < stocks[index + i]:
isValley = False
if isValley:
valleys.append(index)
print(valleys)
return len(peaks), len(valleys)
# Driver code for all inputs in folder
def main():
def parse(input):
return [list(map(int, input[0].split()))[1:], list(map(int, input[1].split()))]
# Read inputs
inputs = [os.path.join(sys.path[0], 'inputs', x) for x in
os.listdir(os.path.join(sys.path[0], 'inputs'))]
inputs = [parse(open(path).read().split('\n')) for path in inputs]
# Parse inputs
print('\n{}\n'.format('-' * 10).join(map(lambda item : str(process(item)), inputs)))
if __name__ == "__main__":
main()