A.Password
void solve() {
int n; cin >> n;
for (int i = 0;i < n;i++) {
int x; cin >> x;
}
ll ans = 6;
int m = 10 - n;
if (m >= 2)
ans = ans * m * (m - 1) / 2;
cout << ans << endl;
}
B.Permutation Value
void solve() {
int n; cin >> n;
vector<int> a(n + 1);
a[1] = 1;
a[2] = n;
a[n] = 2;
for (int i = 3;i < n;i++) a[i] = i;
for (int i = 1;i <= n;i++) cout << a[i] << " \n"[i == n];
}
C.Save the Magazines
void solve() {
int n; cin >> n;
string s; cin >> s; s = ' ' + s;
vector<int> cnt(n + 1);
for (int i = 1;i <= n;i++) cin >> cnt[i];
ll ans = 0;
for (int i = 1;i <= n;i++) {
if (s[i] == '1') {
ans += cnt[i];
}
}
int last = 0, pos = -1;
for (int i = 1;i <= n;i++) {
if (s[i] == '0') last = cnt[i], pos = i;
else {
if (last >= cnt[i] && pos != -1) {
swap(s[pos], s[i]);
ans += last - cnt[i];
last = cnt[i];
pos = i;
}
}
}
cout << ans << endl;
}
D.Problem with Random Tests
bitset<1000010> f, g, ans, res;
void solve() {
int n; cin >> n;
string s; cin >> s;
int first = -1;
for (int i = 0;i < n;i++) {
if (s[i] == '0') {
first = i;
break;
}
}
if (first == -1) {
cout << s << endl;
return;
}
for (int i = 0;i < n;i++) {
if (s[i] == '1') f[i] = g[i] = 1;
}
for (int i = 0;i < n;i++) {
if (s[i] == '1') {
res = (g << i) | f;
for (int i = 0;i < n;i++) {
if (res[i] && !ans[i]) {
ans = res;
break;
}
else if (!res[i] && ans[i]) break;
}
}
}
int i = 0;
while (ans[i] == 0 && i < n) i ++;
if (i == n) cout << 0;
for (;i < n;i++) cout << ans[i];
cout << endl;
}