Tutorial is loading...
Код на C++ для уточнения деталей
int n;
cin >> n;
vector<int> a;
int p = -1;
forn(i, n) {
int x;
cin >> x;
if (x == 1 && p != -1)
a.push_back(p);
p = x;
}
a.push_back(p);
cout << a.size() << endl;
for (int i: a)
cout << i << " ";
Tutorial is loading...
Код на C++ для уточнения деталей
string s, t;
cin >> s >> t;
int w = 0;
while (true) {
int i = s.length() - w - 1;
int j = t.length() - w - 1;
if (i >= 0 && j >= 0 && s[i] == t[j])
w++;
else
break;
}
cout << s.length() + t.length() - 2 * w << endl;
Tutorial is loading...
Код на C++ для уточнения деталей
int n;
cin >> n;
vector<int> a(n);
map<int,int> c;
forn(i, n) {
cin >> a[i];
c[a[i]]++;
}
int ans = 0;
forn(i, n) {
bool ok = false;
forn(j, 31) {
int x = (1 << j) - a[i];
if (c.count(x) && (c[x] > 1 || (c[x] == 1 && x != a[i])))
ok = true;
}
if (!ok)
ans++;
}
cout << ans << endl;
Tutorial is loading...
Код на C++ для уточнения деталей
string s;
cin >> s;
int n = s.length();
int r = 0;
vector<int> fin(3, -1);
fin[0] = 0;
vector<int> z(n + 1);
for (int i = 1; i <= n; i++) {
r = (r + s[i - 1] - '0') % 3;
z[i] = z[i - 1];
if (fin[r] != -1)
z[i] = max(z[i], z[fin[r]] + 1);
fin[r] = i;
}
cout << z[n] << endl;
Tutorial is loading...
Код на C++ для уточнения деталей
int n, m;
cin >> n >> m;
vector<int> p(n);
forn(i, n)
cin >> p[i];
map<int,int> c;
c[0] = 1;
bool has = false;
int sum = 0;
long long ans = 0;
for (int r = 0; r < n; r++) {
if (p[r] < m)
sum--;
else if (p[r] > m)
sum++;
if (p[r] == m)
has = true;
if (has)
ans += c[sum] + c[sum - 1];
else
c[sum]++;
}
cout << ans << endl;
Tutorial is loading...
Код на C++ для уточнения деталей
long long greaterCount(int m) {
vector<int> s(2 * n + 1);
int sum = n;
long long result = 0;
s[sum] = 1;
long long add = 0;
forn(i, n) {
if (a[i] < m)
sum--, add -= s[sum];
else
add += s[sum], sum++;
result += add;
s[sum]++;
}
return result;
}
cin >> n >> m;
a = vector<int>(n);
forn(i, n)
cin >> a[i];
cout << greaterCount(m) - greaterCount(m + 1) << endl;
Tutorial is loading...
Код на C++ для уточнения деталей
int n, m, k;
cin >> n >> m >> k;
vector<vector<int>> g(n);
vector<int> a(m), b(m);
forn(i, m) {
cin >> a[i] >> b[i];
a[i]--, b[i]--;
g[a[i]].push_back(b[i]);
g[b[i]].push_back(a[i]);
}
queue<int> q;
q.push(0);
vector<int> d(n, INT_MAX);
d[0] = 0;
while (!q.empty()) {
int u = q.front();
q.pop();
for (int v: g[u])
if (d[v] == INT_MAX) {
d[v] = d[u] + 1;
q.push(v);
}
}
vector<vector<int>> inc(n);
forn(i, m) {
if (d[a[i]] + 1 == d[b[i]])
inc[b[i]].push_back(i);
if (d[b[i]] + 1 == d[a[i]])
inc[a[i]].push_back(i);
}
vector<int> f(n);
vector<string> result;
forn(i, k) {
string s(m, '0');
for (int j = 1; j < n; j++)
s[inc[j][f[j]]] = '1';
result.push_back(s);
bool ok = false;
for (int j = 1; j < n; j++)
if (f[j] + 1 < inc[j].size()) {
ok = true;
f[j]++;
break;
} else
f[j] = 0;
if (!ok)
break;
}
cout << result.size() << endl;
forn(i, result.size())
cout << result[i] << endl;





















