Listing comert.PAS 
#include <stdio.h> 
#include <mem.h> 
struct planet_t { 
char p,f; double val; char a[26]; 
} a[26]; 
int read_data(FILE *f){ 
int i,k,n; double x; 
char s[40],*p; 
if (fscanf(f,"%d",&n) != 1) return -1; 
memset(a,0,26 * sizeof(struct planet_t)); 
for (i=0;i<n;i++) { 
fscanf(f,"%s %lf",s,&x); 
k=*s-'A';a[k].val=x;a[k].f=k; 
fgets(s,40,f); 
for(p=s;*p;p++) { 
if ((*p >= 'A') && (*p <= 'Z')) 
a[k].a[*p-'A']=1; 
else if (*p == '*') a[k].p=1; 
} 
} 
return 0; 
} 
void solve(void){ 
int i,j,k,m; 
do { 
m=0; 
for (i=0;i<26;i++) 
for (j=0;j<26;j++) 
if (a[i].a[j] && (a[i].val*0.95- 
a[j].val > 0.00001)) { 
m=1; 
a[j].val=a[i].val*0.95; 
a[j].f=a[i].f; 
} 
} while(m); 
} 
void write_res(FILE *f){ 
int i,from; double max=-1.0; 
for(i=0;i<26;i++) 
if (a[i].p) 
if(max<a[i].val) 
max=a[i].val,from=a[i].f; 
fprintf(f,"Import din %c\n",from+'A'); 
} 
void main(void){ 
FILE *f=fopen("IMPORT.IN","rt"); 
FILE *fw=fopen("IMPORT.OUT","wt"); 
while(!read_data(f)){ 
solve(); 
write_res(fw); 
} 
fclose(f); 
fclose(fw); 
}