結果
| 問題 | No.609 Noelちゃんと星々 | 
| コンテスト | |
| ユーザー |  extelo | 
| 提出日時 | 2017-12-12 14:21:43 | 
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 29 ms / 2,000 ms | 
| コード長 | 1,286 bytes | 
| コンパイル時間 | 824 ms | 
| コンパイル使用メモリ | 78,124 KB | 
| 最終ジャッジ日時 | 2025-01-05 05:10:33 | 
| ジャッジサーバーID (参考情報) | judge1 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 25 | 
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:62:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   62 |   scanf("%d", &num);
      |   ~~~~~^~~~~~~~~~~~
main.cpp:68:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   68 |     scanf("%lld", &data[i]);
      |     ~~~~~^~~~~~~~~~~~~~~~~~
            
            ソースコード
#include <stdio.h>
#include <iostream>
#include <math.h>
void quick_sort(long long int *data, int left, int right)
{
  int i = left;  
  int j = right;
  int pivot = data[(left+right)/2];
  while(1) {
    while (data[i] < pivot) {
      i++;
    }
    while (pivot < data[j]) {
      j--;
    }
    if (i >= j) {
      break;
    }
    long long int tmp = data[i];
    data[i] = data[j];
    data[j] = tmp;
    i++;
    j--;
  }
  if (left < i-1) {
    quick_sort(data, left, i-1);
  }
  if (j+1 < right) {
    quick_sort(data, j+1, right);
  }
}
void showdata(long long int *data, int num)
{
  for(int i=0; i<num; i++) {
    printf("%lld\n", data[i]);
  }
}
long long int move_point(long long int *data, int num)
{
  long long int target = data[(num-1)/2];
  long long int sum = 0;
  for(int i=0; i<num; i++) {
    sum += abs(data[i] - target);
  }
  return sum;
}
int main(void)
{
  int num;
  scanf("%d", &num);
  
  long long int *data;
  data = new long long int[num];
  //data = (long long int *)malloc(num * sizeof(long long int));
  for(int i=0; i<num; i++){
    scanf("%lld", &data[i]);
    //printf("%lld\n", data[i]);
  }
  quick_sort(data, 0, num-1);
//showdata(data, num);
  long long int sum = move_point(data, num);
  printf("%lld\n", sum);
  
  return 0;
}
            
            
            
        