#include #include ifstream in("fastfood.in"); int n,k; int diff[201],d[201],a[201],b[201]; int from[31],to[31]; void ordina() { int i,j; int auxa,auxb,auxd; for (i=1;i<=n-1;i++) { auxd=diff[i]; auxa=a[i]; auxb=b[i]; for (j=i-1;(j>=0) && (diff[j]< auxd);j--) { diff[j+1]=diff[j]; a[j+1]=a[j]; b[j+1]=b[j]; } diff[j+1]=auxd; a[j+1]=auxa; b[j+1]=auxb; } } void computa() { int i; for (i=1;i<=n-1;i++) { a[i]=i; b[i]=i+1; diff[i]=d[i+1]-d[i]; } ordina(); for (i=1;i<=n;i++) { from[i]=0; to[i]=0; } from[1]=1; to[n]=1; for (i=1;i<=k-1;i++) { to[a[i-1]]=1; from[b[i-1]]=1; } } void main() { int i,dep,start,tot; int dove,da,fino; int seq=1; while(in >> n >> k,n) { for (i=1;i<=n;i++) in >> d[i]; computa(); cout << "Chain " << seq++ << "\n"; dep=0; tot=0; start =1; for(dep=1;dep<=k;dep++) { for (i=start;(i<=n) && (from[i]==0);i++); start=i; dove=i; da=i; for (i=start;(i<=n) && (to[i]==0);i++); start=i; fino=i; cout << "Depot " << dep << " at restaurant " << dove << " serves restaurant"; if (da==fino) { start++; cout << " " << da << "\n"; } else cout << "s " << da << " to " << fino << "\n"; tot = tot + d[fino] - d[da]; } cout << "Total distance sum = " << tot << "\n\n"; } in.close(); }