Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- def file_open(filename):
- T = 0
- caseList = []
- with open(filename) as f:
- T = int(f.readline().strip())
- for i in range(T):
- key = int(f.readline().strip())
- value = [int(x) for x in f.readline().strip().split()]
- caseList.append((key, value))
- return caseList
- def sortforthis(elements):
- """
- >>> sortforthis([457, 478, 106, 601, 804])
- [804, 601, 457, 106, 478]
- >>> sortforthis([384, 675, 498, 839])
- [839, 675, 384, 498]
- """
- output = []
- elements = sorted(elements, reverse = True)
- is_even = False
- if len(elements) % 2 == 0:
- is_even = True
- else:
- is_even = False
- if is_even:
- output.append(elements[0])
- for i in range(1, len(elements), 2):
- output.append(elements[i])
- for i in range(len(elements) - 2 , 1, -2):
- output.append(elements[i])
- else:
- output.append(elements[0])
- for i in range(1, len(elements) -1, 2):
- output.append(elements[i])
- for i in range(len(elements) - 1, 1, -2):
- output.append(elements[i])
- return output
- def process(caseTuple):
- import math
- menseki = 0
- numOfElements, elementsList = caseTuple
- angle = 2 * math.pi / numOfElements
- elementsList = sortforthis(elementsList)
- for i in range(numOfElements):
- j = i + 1 if i < numOfElements - 1 else 0
- tmp = math.sin(angle) * elementsList[i] * elementsList[j] / 2
- menseki += tmp
- return menseki
- def solve(caseList, outputName):
- f = open(outputName, 'w')
- for i, T in enumerate(caseList):
- answer = process(T)
- f.write("Case #" + str(i + 1) + ": " + str(answer) + "\n")
- f.close()
- def _test():
- import doctest
- doctest.testmod()
- def main():
- FILENAME = "A-large.in"
- OUTPUTNAME = "outputAlarge.txt"
- A = file_open(FILENAME)
- solve(A, OUTPUTNAME)
- if __name__ == "__main__":
- main()
- #_test()
Add Comment
Please, Sign In to add comment