알고리즘 연습/백준
[C++][BOJ 1461 도서관] 정렬
_h.j
2021. 9. 7. 11:51
728x90
골드5 정렬
문제 풀이
좀 버벅거리면서 풀었다.
중요 포인트는 양수 음수 따로 생각해줘야한다는 것.
m개 묶음에서 가장 먼 곳의 거리*2해서 더하고
마지막으로 간 곳에서 원점으로 되돌아올 필요없으니 빼준다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n,m,p_pos=0;
cin >> n >> m;
int dis[n];
for(int i = 0 ; i < n ;i++){
cin>>dis[i];
if(dis[i]<0) p_pos++;
}
sort(dis,dis+n);
int result = 0;
for(int i = n-1; i>= p_pos ;i-=m){
result += (dis[i]*2);
}
for(int i = 0; i< p_pos ;i+=m){
result += (abs(dis[i]*2));
}
result -= max(dis[n-1], abs(dis[0]) );
cout<<result;
}
참고
728x90