CodeChef submission 26787 (PYTH) plaintext list. Status: TLE, problem C4, contest MAY09. By shashikanth_a (Shashikanth ASV), 2009-05-09 03:09:36.
#!usr/bin/python import string, sys, math def xcombinations(items, n): if n == 0: yield [] else: for i in xrange(len(items)): #for cc in xcombinations(items[:i] + items[i+1:], n-1): for cc in xcombinations(items[i+1:], n-1): yield [items[i]] + cc def hdp (L1,L2,prot_value): position_map={} repetations_map={} seq1=L1.split(); sol_seq=[] protien_value={} for i in range(1,int(string.atoi(seq1[0]))+1,1): protien_value[chr(96+i)]=int(string.atoi(seq1[i])) seq=[] sum=0 count=0 while 1: for i in range(count,len(L2),1): # if (sum+protien_value[L2[i]]) > prot_value: # continue if (sum+protien_value[L2[i]]) == prot_value: seq1="" for j in range(0,len(seq),1): seq1+=L2[seq[j]] seq1+=L2[i] sol_seq.append(seq1) if (sum+protien_value[L2[i]]) < prot_value: seq.append(i) sum+=protien_value[L2[i]] if i== ((len(L2))-1): #print '%s' % seq,i if len(seq)==0: break count=seq.pop()+1 if count== ((len(L2))-1): if len(seq)==0: break count=seq.pop()+1 sum-=protien_value[L2[count-1]] #print '%s 1 ' % seq,count,len(L2) sum-=protien_value[L2[count-1]] if len(seq)==0: break # print '%s' % L2[:2] # xcombinations(L2,len(L2)) # print '%s' % sol_seq # print pm # for count in range(1,len(L2)+1,1): # for pm in xcombinations(L2,count): # sum=0 # for i in range (0,len(pm),1): # sum+=protien_value[pm[i]] # if sum==prot_value: # sol_seq.append(''.join(pm)) # for count in range(0,len(L2),1): # sum_par=0; # sum=protien_value.get(L2[count]); # seq=L2[count] # for count1 in range(count+1,len(L2),1): # print '%i' % sum,count,count1,seq # if ((sum)+ protien_value.get(L2[count1]))>prot_value: # continue; # if ((sum)+ protien_value.get(L2[count1]))==prot_value: # if (seq+(L2[count1])) in sol_seq: # 1 # else: # sol_seq.append(seq+(L2[count1])) # continue; # if ((sum)+ protien_value.get(L2[count1]))<prot_value: # seq+=(L2[count1]) # sum+=protien_value.get(L2[count1]) # continue; #final_seq=sol_seq[0] if len(sol_seq)==0: final_seq="IMPOSSIBLE" else: sol_seq.sort() final_seq=sol_seq[0] return final_seq; number_of_test_cases=sys.stdin.readline() number_of_test_cases=string.strip(number_of_test_cases) number_of_test_cases=int(string.atoi(number_of_test_cases)) input_array= [] sol_seq=[] for i in range(0,3*(number_of_test_cases),1): input_array.insert(i,string.strip(sys.stdin.readline())); for i in range(0,number_of_test_cases,1): L1=L2="" prot_value=0 for j in range(0,3,1): if j==0: L1=input_array[(3*i)+j]; if j==1: L2=input_array[(3*i)+j]; if j==2: prot_value=int(string.atoi(input_array[(3*i)+j])); res=hdp(L1,L2,prot_value); print'%s'% res;
Comments

