昨天打比赛有一个疑惑,我的一题代码总是会莫名 WA 最后一个点,而对输出那行代码微调即 AC,但理应输出是一样的?
WA 点代码:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long ll;
#define endl '\n'
ll t, n, m, k, s;
ll a[10000];
ll minn = 1e9;
int main()
{
//freopen("input.in","r",stdin);
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> t;
while (t--)
{
minn = 1e9;
cin >> n >> m >> k >> s;
for (ll i = 1; i <= n; i++)
{
cin >> a[i];
minn = min(minn, a[i]);
}
if (minn <= s)
{
cout << "0";
}
else if (m == 0 and minn > s)
{
cout << "Impossible!";
}
else
{
cout << ceil((double)(minn - s) / m);
}
cout << endl;
}
return 0;
}
评测结果(最后一点: Wrong Answer. wrong answer On line 2 column 2, read ., expected 5.)
AC 代码:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long ll;
#define endl '\n'
ll t, n, m, k, s;
ll a[10000];
ll minn = 1e9;
int main()
{
//freopen("input.in","r",stdin);
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> t;
while (t--)
{
minn = 1e9;
cin >> n >> m >> k >> s;
for (ll i = 1; i <= n; i++)
{
cin >> a[i];
minn = min(minn, a[i]);
}
if (minn <= s)
{
cout << "0";
}
else if (m == 0 and minn > s)
{
cout << "Impossible!";
}
else
{
cout << (int)(ceil((double)(minn - s) / m));
}
cout << endl;
}
return 0;
}
评测结果: