上記URLの問題に対して以下のようなコードを提出しました。
C++
1#include <bits/stdc++.h> 2#include <math.h> 3#define ALL(a) a.begin(), a.end() 4#define rep(i, K, N) for(long long int i = K; i < N; i++) 5#define ll long long int 6using namespace std; 7 8int main(){ 9ll N;cin >> N; 10vector<ll> V(N); 11vector<double> A; 12 13rep(i, 0, N)cin >> V[i]; 14 15sort(ALL(V)); 16 17double M = V[N - 1]; 18 19for(auto v : V ){ 20 21 A.push_back(abs(M/2 - v)); 22 23} 24 25auto Iter = min_element(ALL(A)) - A.begin(); 26 27cout << M << " " << V[Iter]; 28 29}
するとサンプル(URL先にある入力例)に対してのみ正解を出力しておりほかは軒並み不正解でした。なにかヒントとなる助言をいただけると幸いです。
試したこと
配列Vの最大値Mを2で割る際Mがlong longのままでは計算に狂いが生じると考え変数Mの型をdoubleに変え、それに応じて配列Aの要素もdoubleに変えましたが結果は同じでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/03 04:34