Bạn Kiệt là một người rất tốt bụng,trong một lần đi du lịch Kiệt đã được đi đến khu đồ lưu niệm,vì có hai người bạn thân nên Kiệt quyết định mua hai món quà khác nhau (mỗi món quà cùng loại) mà không vượt quá túi tiền Yêu cầu đề ra: tìm ra vị trí của hai món đồ đó sao cho tổng của hai số đó nhỏ hơn hoặc bằng số tiền của Kiệt. Input: cho hai số n và m là số lượng đồ chơi của hai loại I và j lần lượt là vị trí của hai món quà của mỗi loại Dòng đầu ghi số lượng của hai loại và số tiền của Kiệt Output: In ra 2 số là vị trí của hai món quà sao cho <= s là lớn nhất có thể. Nếu không có kết quả in ra hai số -1 -1. Cho ví dụ sau: 4 2 14 5 2 4 9 1 6 In ra 1 2 ( giải thích: 5+6<14 và là lớn nhất,1 2 là vị trí của hai số)
2 câu trả lời
#include <bits/stdc++.h>
using namespace std;
main(){
int n, m, s, i, j, t, max = 0, v1, v2;
cin >> n >> m >> s;
int a[n], b[m];
for (i = 1; i <= n; i++){
cin >> a[i];
}
for (i = 1; i <= m; i++){
cin >> b[i];
}
for (i = 1; i <= n; i++){
for (j = 1; j <= m; j++){
t = a[i] + b[j];
if (max < t && t <= s){
max = t;
v1 = i;
v2 = j;
}
}
}
if (max > 0){
cout << v1 << " " << v2;
} else {
cout << -1 << " " << -1;
}
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m,s,a[10000],b[10000],c=1,d=1;
cin>>n>>m>>s;
for (int i=1; i<=n; i++) cin>>a[i];
for (int i=1; i<=m; i++) cin>>b[i];
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
if (a[i]+b[j]<=s && a[c]+a[d]<a[i]+b[j]){
c=i; d=j;
}
cout<<c<<" "<<d;
}