Official
B - Split? Editorial by physics0523
C++での軽い実装方法を紹介します。
set<int> pln
でピンが立っている列がどれかを管理しています。(C++ の set
については cpprefjp - C++日本語リファレンス - set を参照)
set<int>
は同一要素の重複を禁じるので、 set<int>
に含まれる最小要素を \(m\) 、最大要素を \(M\) としたとき、( set<int>
の大きさ) = \(M-m+1\) が成り立つことと set<int>
の中身が \(\{ m,m+1,\dots,M \}\) であることとは同値です。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin >> s;
if(s[0]=='1'){cout << "No\n";return 0;}
vector<int> line={4,3,5,2,4,6,1,3,5,7};
set<int> pln;
for(int i=0;i<10;i++){
if(s[i]=='1'){pln.insert(line[i]);}
}
if(pln.empty()){cout << "No\n";return 0;}
int mn=(*pln.begin()), mx=(*pln.rbegin());
if(mx-mn+1 != pln.size()){cout << "Yes\n";}
else{cout << "No\n";}
return 0;
}
posted:
last update: