Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. from itertools import permutations
  2. from random import randint, seed, shuffle, sample
  3. seed(47)
  4.  
  5. MAXN = 500000
  6.  
  7. def shuffled(seq):
  8. sc = seq[:]
  9. shuffle(sc)
  10. return sc
  11.  
  12. def randomset(sz,gen):
  13. answer = set()
  14. while len(answer) < sz: answer.add( gen() )
  15. return sorted([x for x in answer])
  16.  
  17. def fewpivots(pc):
  18. data = randomset( MAXN, lambda:randint(0,10**9) )
  19. pivots = randomset( pc, lambda:randint(0,MAXN-1) )
  20. pivots = [-1] + pivots
  21. answer = []
  22. for i in range(1,pc+1):
  23. answer += shuffled( data[ pivots[i-1]+1 : pivots[i] ] )
  24. answer.append( data[ pivots[i] ] )
  25. answer += shuffled( data[ pivots[pc]+1 : ] )
  26. return answer
  27.  
  28. def manypivots(sc):
  29. data = randomset( MAXN, lambda:randint(0,10**9) )
  30. for i in range(sc):
  31. x = randint(0,MAXN-101)
  32. y = x + randint(1,100)
  33. data[x], data[y] = data[y], data[x]
  34. return data
  35.  
  36. def save(tid,seq):
  37. f = open(tid,'w')
  38. f.write('{}\n{}\n'.format(len(seq),' '.join(str(x) for x in seq)))
  39. f.close()
  40. print('Saved {} (len {} sum {}) into {}'.format(seq[:5],len(seq),sum(seq),tid))
  41.  
  42. save('00.sample.a.in',[20,10,30,50,40,60])
  43. save('00.sample.b.in',[300,200,100])
  44.  
  45. tid = 0
  46. tid += 1 ; save('{:02d}.in'.format(tid),[47])
  47. tid += 1 ; save('{:02d}.in'.format(tid),[42,47])
  48. tid += 1 ; save('{:02d}.in'.format(tid),[47,42])
  49.  
  50. for perm in permutations([42,47,147]):
  51. tid += 1 ; save('{:02d}.in'.format(tid),perm)
  52.  
  53. for perm in permutations([42,47,147,174]):
  54. tid += 1 ; save('{:02d}.in'.format(tid),perm)
  55.  
  56. for i in range(10):
  57. tid += 1 ; save('{:02d}.in'.format(tid),shuffled([x for x in range(10*(i+1))]))
  58.  
  59. tid += 1 ; save('{:02d}.in'.format(tid),range(MAXN))
  60.  
  61. for pc in range(1,6):
  62. for n in range(3):
  63. tid += 1 ; save('{:02d}.in'.format(tid),fewpivots(pc))
  64.  
  65. for n in range(10):
  66. tid += 1 ; save('{:02d}.in'.format(tid),manypivots(10*(n+1)))
  67.  
  68. tid += 1 ; save('{:02d}.in'.format(tid), [1,2,499998] + [x for x in range(4,499998)] + [3,499999,500000] )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement