This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 121234;
int ini[MAXN], fim[MAXN];
int seg[4 * MAXN];
void update(int cur, int ini, int fim, int a, int b, int val) {
if(ini > b || fim < a) return;
if(ini >= a && fim <= b) {
seg[cur] += val;
return;
}
int m = (ini + fim) / 2;
int e = 2 * cur, d = 2 * cur + 1;
update(e, ini, m, a, b, val); update(d, m + 1, fim, a, b, val);
}
int query(int cur, int ini, int fim, int id) {
if(ini > id || fim < id) return 0;
if(ini == fim) return seg[cur];
int m = (ini + fim) / 2;
int e = 2 * cur, d = 2 * cur + 1;
return query(e, ini, m, id) + query(d, m + 1, fim, id) + seg[cur];
}
int main() {
int n, k;
scanf("%d %d", &n, &k);
k += n - 1;
for(int i = 1; i <= n; i++) {
ini[i] = i;
fim[i] = i;
update(1, 1, n, ini[i], fim[i], 1);
}
for(int i = 0; i < k; i++) {
char c;
scanf(" %c", &c);
if(c == 'S') {
int a, b;
scanf("%d %d", &a, &b);
update(1, 1, n, ini[a], fim[a], -1);
update(1, 1, n, ini[b], fim[b], -1);
fim[a] = max(fim[a], fim[b]); fim[b] = fim[a];
ini[a] = min(ini[a], ini[b]); ini[b] = ini[a];
update(1, 1, n, ini[a], fim[a], 2);
}
else if(c == 'Q') {
int a, b;
scanf("%d %d", &a, &b);
if(b >= ini[a] && b <= fim[a]) printf("yes\n");
else printf("no\n");
}
else {
int a;
scanf("%d", &a);
printf("%d\n", query(1, 1, n, a));
}
}
}
Compilation message (stderr)
servers.cpp: In function 'int main()':
servers.cpp:25:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
25 | scanf("%d %d", &n, &k);
| ~~~~~^~~~~~~~~~~~~~~~~
servers.cpp:34:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
34 | scanf(" %c", &c);
| ~~~~~^~~~~~~~~~~
servers.cpp:37:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
37 | scanf("%d %d", &a, &b);
| ~~~~~^~~~~~~~~~~~~~~~~
servers.cpp:46:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
46 | scanf("%d %d", &a, &b);
| ~~~~~^~~~~~~~~~~~~~~~~
servers.cpp:52:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
52 | scanf("%d", &a);
| ~~~~~^~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |