Official
B - Same Editorial
by
B - Same Editorial
by
MMNMM
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
素朴な方法
「\(A _ 1,A _ 2,\ldots,A _ N\) がすべて等しい」ことは、「\(A\) のどの \(2\) つの要素を取り出しても等しい」ことと同値です。
よって、\(A\) をすべて読み込んで、ありえる \(2\) つのペアすべてについて値が等しいかを判定すればよいです。
実装例は以下のようになります。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> A(N);
for(int i = 0; i < N; ++i) // A をすべて入力する
cin >> A[i];
for(int i = 0; i < N; ++i)
for(int j = 0; j < N; ++j)
if(A[i] != A[j]){ // 違うペアがあったら
cout << "No" << endl; // No と出力して
return 0; // 終了
}
// 違うペアがなかったら
cout << "Yes" << endl; // Yes と出力して
return 0; // 終了
}
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> A(N);
for(auto&& a : A) // A をすべて入力する
cin >> a;
for(auto a : A)
for(auto b : A)
if(a != b){ // 違うペアがあったら
cout << "No" << endl; // No と出力して
return 0; // 終了
}
// 違うペアがなかったら
cout << "Yes" << endl; // Yes と出力して
return 0; // 終了
}
N = int(input())
A = list(map(int, input().split())) # A をすべて読み込む
for a in A:
for b in A:
if a != b: # 違うペアがあったら
print('No') # No と出力して
break # ループを抜ける
else: # 違うペアがなかったら
continue # 探索を続ける
break
else: # 最後まで違うペアがなかったら
print('Yes') # Yes と出力
より高速な方法
「\(A _ 1,A _ 2,\ldots,A _ N\) がすべて等しい」ことは、「\(A _ 2,A _ 3,\ldots,A _ N\) がすべて \(A _ 1\) と等しい」ことと同値です。
なので、\(N\) と \(A _ 1\) を入力して、残りが \(A _ 1\) と等しいかを判定すればよいです。
これは、等しくない値があればその時点で No
と出力して終了し、全てを判定し終わったら Yes
と出力すると実装が簡便になります。
実装例は以下のようになります。
#include <iostream>
using namespace std;
int main() {
int N, A1; // A の先頭を先に読んでおく
cin >> N >> A1;
for (int i = 1; i < N; ++i) { // A の残りについて
int A;
cin >> A; // 読み込んで
if (A != A1) { // 等しくなければ No を出力して終了
cout << "No" << endl;
return 0;
}
}
// すべて判定が終わってここに到達したら Yes
cout << "Yes" << endl;
return 0;
}
N = int(input())
A1, *A = map(int, input().split()) # A の先頭とそれ以外に分ける
for a in A:
if A1 != a: # 異なる要素があったら No
print('No')
break
else: # break されなかったら Yes
print('Yes')
posted:
last update: