문제출처 : https://www.acmicpc.net/problem/17505
code
#include <iostream>
#include <vector>
using namespace std;
int main()
{
long long N, K, i, j = 1;
cin >> N >> K;
vector<int> arr(N);
if (K == 0)
{
for (i = 0; i < N; i++)
arr[i] = j++;
}
else if (K < N)
{
arr[K] = j++;
for (i = 0; i < N; i++)
if (i != K)
arr[i] = j++;
}
else
{
int index = N - 1;
while(K)
{
if (K < index)
{
arr[K] = j++;
K = 0;
}
else
{
arr[index] = j++;
K -= index--;
}
}
}
for (i = 0; i < N; i++)
if (arr[i] == 0)
arr[i] = j++;
for (i = 0; i < N; i++)
cout << arr[i] << " ";
return 0;
}
일반 그리디문제랑 별다를거없는 문제였다. 골드정도의 난이도는 아닌듯..? 아닌가
몰라 좀 야매긴하지만, 경우를 3가지로 나눠서 처리하니까 훨씬 편리했다.