제출 #408721

#제출 시각아이디문제언어결과실행 시간메모리
408721ly20Inside information (BOI21_servers)C++17
10 / 100
181 ms6056 KiB
#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));
        }
    }
}

컴파일 시 표준 에러 (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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...