Input
The input consists of a single string of uppercase letters A-Z. The length of the string is between 1 and 10 characters, inclusive.Output
Output “YES” or “NO”.Examplesinput
GENIUS
output
YES
input
DOCTOR
output
NO
input
IRENE
output
YES
input
MARY
output
NO
input
SMARTPHONE
output
NO
input
REVOLVER
output
YES
input
HOLMES
output
NO
input
WATSON
output
YES
Solution:
#include <bits/stdc++.h>
using namespace std;
vector<string> els = {"H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar","K","Ca","Sc","Ti","V","Cr","Mn","Fe","Co","Ni","Cu","Zn","Ga","Ge","As","Se","Br","Kr","Rb","Sr","Y","Zr","Nb","Mo","Tc","Ru","Rh","Pd","Ag","Cd","In","Sn","Sb","Te","I","Xe","Cs","Ba","La","Ce","Pr","Nd","Pm","Sm","Eu","Gd","Tb","Dy","Ho","Er","Tm","Yb","Lu","Hf","Ta","W","Re","Os","Ir","Pt","Au","Hg","Tl","Pb","Bi","Po","At","Rn","Fr","Ra","Ac","Th","Pa","U","Np","Pu","Am","Cm","Bk","Cf","Es","Fm","Md","No","Lr","Rf","Db","Sg","Bh","Hs","Mt","Ds","Rg","Cn","Nh","Fl","Mc","Lv","Ts","Og"};
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
for (string& x : els) {
if (x.size() == 2) {
x[1] = (char) toupper(x[1]);
}
}
string s;
cin >> s;
vector<bool> dp(s.size() + 1);
dp[0] = true;
for (int i = 0; i < (int) s.size(); i++) {
if (dp[i]) {
for (string w : els) {
if (s.substr(i, w.size()) == w) {
dp[i + (int) w.size()] = true;
}
}
}
}
cout << (dp.back() ? "YES" : "NO") << '\n';
return 0;
}
Related posts:
Delivery Club
Tree Factory
Alternating Current
Booking System
Maximum Flow
Numbers
Points on Line
Little Artem and Random Variable
Lowest Common Ancestor - Binary Lifting
Paint it really, really dark gray
Epic Convolution
Colorado Potato Beetle
Bacterial Melee
Born This Way
4-point polyline
Chip Game
Robots on a Grid
Zuma
Three strings
Hydra
Restoring Three Numbers
New Year and Cake
New Year and Cleaning
Hot is Cold
Double Permutation Inc
Number of paths of fixed length / Shortest paths of fixed length
Bad Days
Finding strongly connected components - Building condensation graph
Wilbur and Points
Permutation Partitions
Polygons
Triangle