質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

1回答

586閲覧

Atcorder Biginner Contest 156 C問題 Rally 座標上の平均値を求め、計算量を少なく解答したいです。

Tepura

総合スコア5

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/05/10 14:16

Atcorder Biginner Contest 156 C問題 Rally について

C言語で回答してみましたがテストケースが7/14個引っ掛かり、かつテストケースが非公開なためバグを発見できず困っています。

以下回答したコードです。

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdbool.h> #include <math.h> #pragma warning(disable : 4996) //_CRT_SECURE_NO_WARNINGS int comp(const void* a, const void* b) { return *(int*)a - *(int*)b; } int main(void) { int n; int cnt = 0; int sum = 0; int* data; int list[100000]; for (int i = 0;i < 100000;i++) { list[i] = 0; } scanf("%d", &n); data = (int*)malloc(sizeof(int) * n); for (int i = 0;i < n;i++) { scanf("%d", &data[i]); sum += data[i]; } qsort(data, n, sizeof(int), comp); for (int i = sum / n;i <= data[n-1];i++) { for (int j = 0;j < n;j++) { list[cnt] += (data[j] - i) * (data[j] - i); } cnt += 1; } qsort(list, n, sizeof(int), comp); printf("%d", list[0]); free(data); data = NULL; return 0; }

総当たりでも答えを出せるのですが、問題の構成上数直線上に並ぶ座標の平均値を求めた上で
計算した方がスマートだと考えました。

アルゴリズムに問題があるのか、はたまた凡ミスをしているのか不明なためご指摘いただけたら幸いです。宜しくお願い致します。

補足

OS windows 8 64bit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

qsort(list, n, sizeof(int), comp);

ココがダメかと.
list[]のうち使用した要素数がnを下回る場合に答えが0になる(list[]の使ってない要素には0が入っているからそれが最小値になる).


座標の平均値を求めた上で計算

するのは良いのですが,その方法(forでたくさん計算している)が微妙に思います.
もしも「整数でない」Pを求めるとしたらそれは平均値そのものです.
なので,「整数縛りなP」の候補として考えるべきは2通りで済むのではないかと.

投稿2020/05/11 05:27

編集2020/05/11 05:39
fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問