답안 #557542

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
557542 2022-05-05T12:49:38 Z Mounir Inside information (BOI21_servers) C++14
0 / 100
214 ms 700 KB
#include <bits/stdc++.h>
#define all(v) v.begin(), v.end()
#define sz(x) (int)x.size()
#define pb push_back
#define pii pair<int, int>
#define chmin(x, v) x = min(x, v)
#define chmax(x, v) x = max(x, v)
#define print(x) cout << #x << " est " << x << endl;
#define x first
#define y second
#define int long long
using namespace std;
 
const int N = 2e5;
int deb[N], fin[N];
int sum[2 * N];
int getSum(int g, int d){
      if (d < g) return 0;
      if (g%2 == 1) return sum[g] + getSum(g + 1, d);
      if (d%2 == 0) return sum[d] + getSum(g, d - 1);
      return getSum(g/2, d/2);
}

void upd(int i, int d){
      for (int nod = i; nod > 0; nod /= 2)
            sum[nod] += d;
}

void changeEtat(int i, int d){
      upd(N + deb[i], d);
      upd(N + fin[i], -d);
}
 
signed main(){  
      int nServs, nReqs; cin >> nServs >> nReqs;
      for (int i = 1; i <= nServs; ++i){
            deb[i] = i, fin[i] = i + 1;
            changeEtat(i, 1);
      }
      while (nReqs--){
            char typeReq; cin >> typeReq;
            if (typeReq == 'S'){
                  int a, b; cin >> a >> b;
                  changeEtat(a, -1);
                  changeEtat(b, -1);
                  int d = min(deb[a], deb[b]), f = max(fin[a], fin[b]);
                  deb[a] = deb[b] = d;
                  fin[a] = fin[b] = f;
                  changeEtat(a, 1);
                  changeEtat(b, 1);
            }
            else if (typeReq == 'Q'){
                  int a, d; cin >> a >> d;
                  if (deb[a] <= d && d <= fin[a]) cout << "yes" << endl;
                  else cout << "no" << endl;
            }
            else {
                  int d; cin >> d;
                  cout << getSum(N, N + d) << endl;
            }
      }
      return 0;   
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 191 ms 680 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 191 ms 680 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 196 ms 700 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 196 ms 700 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 204 ms 684 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 204 ms 684 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 200 ms 632 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 200 ms 632 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 201 ms 664 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 201 ms 664 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 214 ms 688 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 214 ms 688 KB Output isn't correct
2 Halted 0 ms 0 KB -