Неправильно:
while (q--) {
int u, v;
cin >> u >> v;
--u, --v;
if (!dsu.merge(u, v)) {
// ниче ж не поменялось)))))) можно сделать continue))))))
continue;
}
make_some_logic(u, v);
cout << get_cur_ans() << "\n";
}
Правильно:
while (q--) {
int u, v;
cin >> u >> v;
--u, --v;
if (dsu.merge(u, v)) {
make_some_logic(u, v);
}
cout << get_cur_ans() << "\n";
}
Неправильно:
int n, m;
cin >> n >> m;
vector<vector<int>> a(n);
for (int i = 0; i < n; ++i) {
int u, v;
cin >> u >> v;
--u, --v;
a[u].push_back(v);
a[v].push_back(u);
}
Правильно:
int n, m;
cin >> n >> m;
vector<vector<int>> a(n);
for (int i = 0; i < m; ++i) {
int u, v;
cin >> u >> v;
--u, --v;
a[u].push_back(v);
a[v].push_back(u);
}
Неправильно:
for (int i = 0; i < n; ++i) {
tree.set(i, a[i]);
}
for (int i = 0; i < Q; ++i) {
int pos, val;
cin >> pos >> val;
tree.update(pos, val);
}
Правильно:
for (int i = 0; i < n; ++i) {
tree.set(i, a[i]);
}
tree.build();
for (int i = 0; i < Q; ++i) {
int pos, val;
cin >> pos >> val;
tree.update(pos, val);
}
Неправильно:
set<pair<int, int>> a;
for (int i = 0; i < n; ++i) {
int pos, val;
cin >> pos >> val;
a.insert({pos, val});
}
sort(all(a));
int q;
cin >> q;
while (q--) {
int pos, val;
cin >> pos >> val;
auto it = a.lower_bound({pos, 0});
if (it != a.end() && it->first > val) { // эээ ну в сете же по first сортим в 1ю очередь
cout << "YES\n";
} else {
cout << "NO\n";
}
}
Правильно:
struct Shit {
int pos;
int val;
bool operator <(const Shit& ot) const {
return make_pair(pos, val) < make_pair(ot.pos, ot.val);
}
}
set<Shit> a;
for (int i = 0; i < n; ++i) {
int pos, val;
cin >> pos >> val;
a.insert({pos, val});
}
sort(all(a));
int q;
cin >> q;
while (q--) {
int pos, val;
cin >> pos >> val;
auto it = a.lower_bound({pos, 0});
if (it != a.end() && it->val > val) { // хуй проебёшься
cout << "YES\n";
} else {
cout << "NO\n";
}
}
Неправильно:
for (int i = 0; i < n; ++i) {
tree.update(i, 1);
}
for (int i = 0; i < n; ++i) {
cout << tree.get_val(i) << endl;
}
Правильно:
for (int i = 0; i < n; ++i) {
tree.update(tin[i], 1);
}
for (int i = 0; i < n; ++i) {
cout << tree.get_val(tin[i]) << endl;
}
Неправильно:
vector<char> used(n), num_comp(n);
int cur = 0;
for (int i = 0; i < n; ++i) {
if (!used[i]) {
dfs(i, cur++);
}
}
Правильно:
vector<char> used(n);
vector<int> num_comp(n);
int cur = 0;
for (int i = 0; i < n; ++i) {
if (!used[i]) {
dfs(i, cur++);
}
}
Неправильно:
bool occurs(const string& s, const string& t) {
for (int i = 0; i + (int)s.length() <= (int)t.length(); ++i) {
// падажжи ебана
// если содержится, то нужен индекс
if (t.substr(i, s.length()) == s) {
return i;
}
}
// иначе пускай будет -1
return -1;
}
Правильно:
int occurs(const string& s, const string& t) {
...
Неправильно:
Node merge(const Node& q, const Node& w) {
Node res; // или res = q
res.min = min(q.min, w.min); // или if (w.min < res.min) res = w
return res;
}
Правильно:
Node merge(const Node& q, const Node& w) {
Node res;
res.push_add = 0; // или в объявлении res = {}, если в конструкторе по умолчанию прописано заполнение
res.min = min(q.min, w.min);
return res;
}
Неправильно:
int n, m;
cin >> n >> m; // w, h
vector<vector<int>> a(n, vector<int>(m, 0));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> a[i][j];
}
}
Правильно:
int n, m;
cin >> m >> n; // w, h
vector<vector<int>> a(n, vector<int>(m, 0));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> a[i][j];
}
}