###やりたい事
ICPCの過去問について解いて頂きたく、宜しくお願い致します。
URL→ https://icpc.iisf.or.jp/past-icpc/domestic2015/contest/all_ja.html
Problem Aです。
※かなり難しいと思いますが解ける方がもしいらっしゃいましたら宜しくお願い致します。
以下のコードでは出力が
3
4
2
2
3
3 ←ここが2ではなく3になってしまいます…
c
1#include <stdio.h> 2#define MAXM 200 // 受験者数の最大値 3int m; // 受験者数 4int nmin; // 最小合格者数 5int nmax; // 最大合格者数 6int p[MAXM]; // 各受験者の得点(降順)p[i-1] = Pi 7int main(void) 8{ 9 for(;;){ 10 int i, n; // n = 合格者数 11 int gap; // これまでに求まっているギャップ 12 int nans; // これまでに求まっている合格者数 13 scanf("%d %d %d", &m, &nmin, &nmax); // 受験者数、最小/最大合格者数の入力 14 if(m==0 && nmin==0 && nmax==0) break; // 全て 0 なら終了 15 for(i=0; i<m; i++) 16 scanf("%d", &p[i]); // 点数を読み込む(降順にソート済み) 17 gap = 0; 18 // nmin <= n <= nmax なる各 n に対して順にギャップを計算 19 // 合格者数が n の時のギャップは、p[n-1]-p[n] となる。 20 for(n=nmin; n<=nmax; n++){ 21 if(p[n-1]-p[n] >= gap){// これまでのギャップ以上なら 22gap = p[n-1]-p[n]; // そのギャップを記憶し 23nans=n; // n を暫定合格者数とする 24 } 25 } 26 printf("%d\n", nans); // 答えの出力 27 } 28 return 0; 29}
2になりましたが…
同じく、「以下のコード」そのままで、出力の最後が「2」になるのを確認した。
ご回答ありがとうございます。
えっ、そうですか!?
自分の方では出力結果が
3↵
4↵
2↵
2↵
3↵
3↵
1↵
1↵
・
・
・
という感じてす(…はずっと1)
与えるデータのほうが間違っているのでは?
末尾の「0 0 0」が抜けているとか。
入力データの方は正しく入っていました。。。
入力データはどのようにしてプログラムに読み込ませていますか?
https://wandbox.org/permlink/1GeKTNfb1lBjluTt
3
4
2
2
3
2
0 0 0の入力で終了するはずなのに1が続くという時点で入力間違えているのでは
みなさん失礼いたしました。
入力の一部を間違えていました。
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー