#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
int n, m;
int sum, temp;
while (cin >> n >> m)
{
int input_n[10002] = { 0 };
int input_m[10002] = { 0 };
sum = 0;
temp = 0;
for (int i = 0; i < n; i++)
{
cin >> input_n[i];
}
for (int i = 0; i < m; i++)
{
cin >> input_m[i];
sum += input_m[i];
}
sort(input_n, input_n + n);
for (int i = n - 1; i >= 0; i--)
{
temp += input_n[i];
if (temp >= sum)
{
break;
}
}
if (temp >= sum)
{
cout << input_n[n - 1] << " " << temp - sum << endl;
}
else
{
cout << "Oh My God" << endl;
}
}
return 0;
}
是題目理解錯誤嗎?
或是程式哪邊有問題
希望有大神能指點一下!
(測資是不是有點怪怪的?
是題目理解錯誤嗎?
或是程式哪邊有問題
希望有大神能指點一下!
(測資是不是有點怪怪的?
測資 :
1500 1500 1000 2000 3000
900 600 200 350 1200 400 1000
第一步 : 3000塊的人付錢 -> 3000 - 900 = 2100 -> 2100 - 600 = 1500
目前狀態 :
1500 1500 1000 2000 1500
200 350 1200 400 1000
第二步 : 原本錢最多的人剩下1500,換2000塊的人付錢。 2000 - 200 - 350 = 1450
目前狀態 :
1500 1500 1000 1450 1500
1200 400 1000
第三步 : 原本錢最多的人剩下1450,換有1500塊的任一人出來付錢。1500 - 1200 = 300
目前狀態 :
300 1500 1000 1450 1500
400 1000
第四步 : 原本錢最多任一人剩下300,換有1500塊的任一人出來付錢。1500 - 400 = 1100
目前狀態 :
300 1100 1000 1450 1500
1000
第五步 : 原本錢最多任一人剩下1100,換錢最多的人出來付錢。1500 - 1000 = 500
目前狀態 :
300 1100 1000 "1450" 500
所以答案 = 初始狀態最有錢 (3000) -> 經過運算之後剩下最有錢 (1450)
測資沒毛病。
是題目理解錯誤嗎?
或是程式哪邊有問題
希望有大神能指點一下!
(測資是不是有點怪怪的?
測資 :1500 1500 1000 2000 3000
900 600 200 350 1200 400 1000
第一步 : 3000塊的人付錢 -> 3000 - 900 = 2100 -> 2100 - 600 = 1500
目前狀態 :
1500 1500 1000 2000 1500
200 350 1200 400 1000
第二步 : 原本錢最多的人剩下1500,換2000塊的人付錢。 2000 - 200 - 350 = 1450
目前狀態 :
1500 1500 1000 1450 1500
1200 400 1000
第三步 : 原本錢最多的人剩下1450,換有1500塊的任一人出來付錢。1500 - 1200 = 300
目前狀態 :
300 1500 1000 1450 1500
400 1000
第四步 : 原本錢最多任一人剩下300,換有1500塊的任一人出來付錢。1500 - 400 = 1100
目前狀態 :
300 1100 1000 1450 1500
1000
第五步 : 原本錢最多任一人剩下1100,換錢最多的人出來付錢。1500 - 1000 = 500
目前狀態 :
300 1100 1000 "1450" 500
所以答案 = 初始狀態最有錢 (3000) -> 經過運算之後剩下最有錢 (1450)
測資沒毛病。
原來如此 感謝大佬!