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 (MN) để 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;
}