Skip to content

Instantly share code, notes, and snippets.

@fayimora
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fayimora/8833289 to your computer and use it in GitHub Desktop.
Save fayimora/8833289 to your computer and use it in GitHub Desktop.
Functional programming rocks
n,ans = input(),0
a = map(int,raw_input().split())
h = [(len(filter(lambda x:x <= i,a))+i)/(i+1) for i in range(101)]
print max(h)
from collections import deque
n = int(raw_input())
boxes = sorted([int(x) for x in raw_input().split()])
piles = []
for size in boxes:
done = False
for i in range(len(piles)):
if size >= piles[i]:
new_size = piles[i] + 1
del piles[i]
piles.insert(0, new_size)
done = True
break
if not done:
piles.append(1)
print len(piles)
n = input()
boxes = map(int, raw_input().split())
s = [0 for i in range(101)]
e = [0 for i in range(102)]
for b in boxes :
s[b] += 1
e[1] = s[0]
for i in range(1, 101) :
if s[i] == 0 :
pass
else :
for j in range(1, i+1) :
# print '[%d %d] %d %d' % (i, j, s[i], e[j])
if e[j] * (i-j+1) <= s[i] :
s[i] -= e[j] * (i-j+1)
e[i+1] += e[j]
e[j] = 0
else :
# print 'else %d %d' % (s[i], (i-j+1))
cnt = s[i] / (i-j+1)
e[j] -= cnt
e[i+1] += cnt
if s[i] % (i-j+1) != 0 :
e[j] -= 1
e[j+s[i]%(i-j+1)] += 1
s[i] = 0
e[i+1] += s[i] / (i+1)
e[s[i]%(i+1)] += 1
# print 's = %d num = %d' % (i, s[i])
# print zip(range(1,21), e[1:21])
# print e[1:]
print sum(e[1:])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment