본문 바로가기

baekjoon

18917번 수열과 쿼리 38

https://www.acmicpc.net/problem/18917

 

18917번: 수열과 쿼리 38

3번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1, 4]이다. 6번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1, 4, 1]이다. 10번째 쿼리가 끝난 이후 배열의 상태는 [0, 3, 1]이다.

www.acmicpc.net

 

누적 합을 써서 푸는 문제이다.
xor 특성상 자기 자신과 XOR 하면 0이 되기 때문에 2번 연산으로 삭제 시킬 때 한 번 더 XOR 해주면 된다.

 

#include <bits/stdc++.h>
#define l long long
#define INF 2e9
#define p pair<int,int>
#define vc vector<l>
using namespace std;

int main(){
   ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);

   l m,a,x,sum = 0,XORSum = 0;

   cin >> m;

   for(int i=0;i<m;i++){
       cin >> a;
       if(a == 1){
           cin >> x;
           sum += x;
           XORSum ^= x;
       }
       else if(a == 2){
           cin >> x;
           sum -= x;
           XORSum ^= x;
       }
       else if(a == 3) cout << sum << "\n";
       else if(a == 4) cout << XORSum << "\n";

   }
}

'baekjoon' 카테고리의 다른 글

14428번 수열과 쿼리 16  (0) 2022.03.24
14427번 수열과 쿼리 15  (0) 2022.03.24
18436번 수열과 쿼리 37  (0) 2022.03.23
5676번 음주 코딩  (0) 2022.03.22
2268번 수들의 합 7  (0) 2022.03.22