Optimizing/Cleaning up Python Script for Zipf's Law
I must confess that I do not understand what you're trying to achieve and how Zipf's law come into play !
But I've some suggestions about the code itself :


Use meaningful variable names.
Concatenating strings only to split the result afterward is terribly costly, for no advantage.
Instead, use meaningful data structures. You deal with a sequence of (count, title) pairs. Flattening that and playing with index parity is confusing.


So, here is my take on it :

import sys
from operator import itemgetter

def main(source = sys.stdin):

   nb_in, nb_out = (int(x) for x in source.readline().split())

   #(lazely) collect Count and Title.
   data = ( source.readline().split() for i in range(nb_in) )

   #multiply each count by rank.
   answers = [ (title, int(count)*(rank+1)) for (rank, (count, title)) in enumerate(data) ]
   answers.sort(key = itemgetter(1), reverse = True)

   for title, _ in answers[:nb_out]:
      print title

main()