백준 문제풀이

백준 23326번 - C++

diligent_gideok 2022. 5. 27. 01:29
#include <bits/stdc++.h>
using namespace std;

set<int> m;
int num1,num2, cur, n, q;

int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n >> q;
	for (int i = 0; i < n; i++) {
		cin >> num1;
		if (num1 == 1) m.insert(i);
	}
	cur = 0;
	
	while (q--) {
		cin >> num1;
		if (num1 == 1) {
			cin >> num2;
			num2 -= 1;
			auto it = m.find(num2);
			if(it==m.end())	m.insert(num2);
			else { m.erase(it); }
		}
		else if (num1 == 2) {
			cin >> num2;
			cur += num2;
			cur %= n;
		}
		else if (num1 == 3) {
			if (m.empty()) { cout << -1<<'\n'; continue; }
			auto it = m.find(cur);
			if (it != m.end()) { cout << 0<<'\n'; continue; }
			it = m.upper_bound(cur);
			if (it != m.end()) {
				cout << *it - cur << '\n';
			}
			else {
				cout << n-cur + *m.begin() << '\n';
			}
		
		}
	}

}

'백준 문제풀이' 카테고리의 다른 글

백준 1927번 - C++  (0) 2022.05.31
백준 21944번 - C++  (0) 2022.05.27
백준 21939번 - C++  (0) 2022.05.26
백준 1202번 - C++  (0) 2022.05.26
백준 7662번 - C++  (0) 2022.05.26