atcorder beginnersselectionのCard Game for Two(https://atcoder.jp/contests/abs/tasks/abc088_b)を解いていて、入力した配列を降順にして偶数番目をアリスが、奇数番目をボブがとるというようにしてプログラムを書きました。
しかし、どこが間違っているのかわかりません。実行すると何も入力も出力もせずおわってしまいます。
問題文
N 枚のカードがあります. i 枚目のカードには,
ai という数が書かれています.
Alice と Bob は, これらのカードを使ってゲームを行います. ゲームでは, Alice と Bob が交互に 1 枚ずつカードを取っていきます. Alice が先にカードを取ります.
2 人がすべてのカードを取ったときゲームは終了し, 取ったカードの数の合計がその人の得点になります. 2 人とも自分の得点を最大化するように最適な戦略を取った時, Alice は Bob より何点多く取るか求めてください.
制約
N は 1 以上
100 以下の整数
ai (1≤i≤N) は 1 以上100 以下の整数
入力
入力は以下の形式で標準入力から与えられる.
N
a1 a2 a3 ... aN
出力
両者が最適な戦略を取った時, Alice は Bob より何点多く取るかを出力してください.
自分が書いたコード↓
#include <stdio.h>
int main(){
int n, i;
int a[n];
scanf("%d", &n);
for(i=0;i<n;i++){
scanf("%d", &a[i]);
}
int j, k, x, m, alice, bob;
k=0;
while(k<n){
for(j=1;j<n;j++){
if(a[j]>a[j-1]){
x=a[j-1]; a[j-1]=a[j]; a[j]=x;
}
}
k++;
}
alice=0; bob=0;
for(m=0;m<=n/2;m++){
alice=alice+a[2m];
bob=bob+a[2m+1];
}
printf("%d", alice-bob);
return 0;
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/30 16:34