티스토리 뷰

 

거꾸로 생각하면 쉽게 풀 수 있다

시프트게 전체가 되므로 그냥 시작점을 옮겨보면 된다

시작점을 기준으로 k칸 뒤에 값을 더해주면 되고

오른쪽 왼쪽 시프트를 할때는 시작점을 움직여보자!

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
int n,q,s;
ll arr[200020];
 
 
int main(){
    cin>>n>>q;
    for(int i=0;i<n;i++cin>>arr[i];
    for(int i=0;i<q;i++){
        int x; cin>>x;
        int a,b;
        if(x==1){
            cin>>a>>b; a--;
            arr[(s+a)%n]+=b;
        } else if(x==2){
            cin>>a; 
            s = (s+n-a)%n;
        } else {
            cin>>a;
            s = (s+a)%n;
        }
    }
    for(int i=0;i<n;i++printf("%d ",arr[(s+i)%n]); puts("");
}
 
 

'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 17505 링고와 순열  (0) 2019.11.08
[백준] 17503 맥주 축제  (0) 2019.11.08
[백준] 17498 폴짝 게임  (0) 2019.11.08
[백준] 17497 계산기  (0) 2019.11.08
[백준] 16438 원숭이 스포츠  (0) 2019.09.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함