본문 바로가기

알고리즘

Boj 30960 c++ 눈물의 조별과제

또다시 한문제에 오래 동안 붙잡힌 불상사가 발생하였다. 주 원인은 long long의 최대값를 고려하지 않은 것(10e18). 채점중 틀리는 지점(%)을 신경 쓰지 않고 오직 코드의 정확성 만을 확인한 후에 제출해야 한다는 것을 깨달았다.

제출은 신중히, 자료형은 정확하게.

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;



int main(){
  ios_base :: sync_with_stdio(false);
  cin.tie(NULL);

  long long N;
  vector<int> ans_point;
  long long ans=0, Min=100000000000000001;

  cin>>N;

  vector<int> v(N);
  vector<long long> awk(N, 0);

  for(int i=0; i<N; i++){
    cin>>v[i];
  }
  sort(v.begin(), v.end());

  for(int i=1; i<N; i++){
    awk[i]=v[i]-v[i-1];
  }
  if(N>3){
  long long start=awk[1]+awk[2];
  for(int i=4; i<N; i+=2){
      start+=awk[i];
  }
      Min=min(start, Min);
  for(int i=2; i<N-1; i+=2){
    start+=(awk[i+1]-awk[i]);
    Min=min(start, Min);
  }   cout<<Min;
      return 0;
  }
  cout<<v[2]-v[0];



}

누적합+그리디

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

Boj 1620 c++ 나는야 포켓몬 마스터 이다솜  (0) 2025.06.03
Boj 2036 c++ 수열의 점수  (0) 2025.06.03
Boj 21758 c++ 꿀따기  (0) 2025.06.03
Boj 31964 c++ 반품회수  (0) 2025.06.02
Boj 25379 c++ 피하자  (0) 2025.06.02