티스토리 뷰

알고리즘/BOJ

[백준] 17505 링고와 순열

세진짱 2019. 11. 8. 14:38

 

내가 i번 인덱스에 둔다는 것은 n-i개의 반전을 가질 수 있다는 말이다

물론 큰 수부터 둬야만 가능하다

시작점을 s 끝점을 e로 잡고

인덱스를 돌아가며 n-i개의 반전이 필요하면 e에있는 것을 놔주고

필요없다면 s에 있는것을 둔다

다 하고 k!=0 || s<=e라면 배열을 봤는데 만족못하거나

다 못본것이므로 -1이다

 

k값은 longlong이 될 수있으므로 주의하자!!

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
ll n,k;
int ans[314166];
 
int main(){
    scanf(" %lld %lld",&n,&k);
    int s=1,e=n;
    for(ll i=1;i<=n;i++){
        if(k>=n-i){
            k-=(n-i);
            ans[i] = e--;
        } else ans[i]=s++;
    }
    if((k!=0|| (s<=e)) puts("-1");
    else for(int i=1;i<=n;i++printf("%d ",ans[i]);
}
 
 

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

[백준] 15988 1,2,3 더하기 3  (0) 2020.01.24
[백준] 15658 연산자 끼워넣기 (2)  (0) 2020.01.24
[백준] 17503 맥주 축제  (0) 2019.11.08
[백준] 17499 수열과 시프트 쿼리  (0) 2019.11.08
[백준] 17498 폴짝 게임  (0) 2019.11.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함