01/10/2018, 00:56

Bài toán sắp xếp và in chỉ số

Mình làm đúng phần tổng nhưng sai phần chỉ số,mình không biết mình code sai chỗ nào, mọi người giúp mình với!

Đề bài: Trong đợt tổ chức đi tham quan danh lam thắng cảnh của thành phố Hồ Chí Minh, Ban tổ chức hội thi Tin học trẻ tổ chức cho N đoàn ( đánh từ số 1 đến N) mỗi đoàn đi thăm quan một địa điểm khác nhau. Đoàn thứ i đi thăm địa điểm ở cách Khách sạn Hoàng Đế di km (i=1,2,…, N). Hội thi có M xe taxi đánh số từ 1 đến M (MN) để phục vụ việc đưa các đoàn đi thăm quan. Xe thứ j có mức tiêu thụ xăng là vj đơn vị thể tích/km.
Yêu cầu: Hãy chọn N xe để phục vụ việc đưa các đoàn đi thăm quan, mỗi xe chỉ phục vụ một đoàn, sao cho tổng chi phí xăng cần sử dụng là ít nhất.
Dữ liệu: File văn bản P2.INP:

  • Dòng đầu tiên chứa hai số nguyên dương N, M (N<=M<=200);
  • Dòng thứ hai chứa các số nguyên dương d1, d2, …, dN;
  • Dòng thứ ba chứa các số nguyên dương v1, v2, …, vM.
  • Các số trên cùng một dòng được ghi khác nhau bởi dấu trắng.
    Kết quả: Ghi ra file văn bản P2.OUT:
  • Dòng đầu tiên chứa tổng lượng xăng dầu cần dùng cho việc đưa các đoàn đi thăm quan (không tính lượt về);
  • Dòng thứ i trong số N dòng tiếp theo ghi chỉ số xe phục vụ đoàn i (i=1, 2, …, N).

Code của mình:
int n,m;
main()
{
int d[100][10],v[100][10],s=0,i,j;
cin>>n>>m;
for(i=1;i<=n;i++)
{cin>>d[i][1];
d[i][2]=i;}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(d[i][1]>d[j][1]) swap(d[i][1],d[j][1]);
for(j=1;j<=m;j++)
{cin>>v[j][1];
v[j][2]=j;}
for(i=1;i<m;i++)
for(j=i+1;j<=m;j++)
if(v[i][1]>v[j][1]) swap(v[i][1],v[j][1]);
for(i=1;i<=n;i++)
s=s+d[n-i+1][1]*v[i][1];
cout<<s<<endl;
for(j=1;j<=n;j++)
cout<<v[j][2]<<endl;
}

Bài liên quan
0