ページ 11

pohの「お仕事」が…

Posted: 2013年12月26日(木) 12:38
by ももうまい
今、poh(Paizaオンラインハッカソン)で行われている問題
「新人女子プログラマの書いたコードを直すだけの簡単なお仕事です」をお試しの気分で解いているんですが…

C++で下のコードで提出前動作確認してみると、「正解」と出ました。
で、ニックネームとメアドを入れて採点すると…
Test case 1 失敗 (出力結果が間違っています) 実行時間:0.08 秒
Test case 2 失敗 (スキップされました)
Test case 3 失敗 (スキップされました)

となりました。そして点数は0点

なぜこうなるのでしょうか?

コード:

#include<iostream>

void check(int campaign_price,int goods1_price,int goods2_price,int &max_price){
	int price=goods1_price+goods2_price;
	if(price <= campaign_price){
		if(price > max_price){
			max_price=price;
		}
	}
}

int main(){
	int goods_num;
	int days_num;
	const int max_goods_num=500000,max_days_num=300;
	static int goods_price[max_goods_num];
	static int campaign_price[max_days_num];
	int max_price;

	std::cin >> goods_num >> days_num;

	for(int i=0;i<goods_num;++i){
		std::cin >> goods_price[i];
	}

	for(int i=0;i<days_num;++i){
		std::cin >> campaign_price[i];
	}
	
	std::cout << std::endl;

	for(int i=0;i<days_num;i++){
		max_price=0;
		for(int j=0;j<goods_num;j++){
			for(int k=0;k<goods_num;k++){
				check(campaign_price[i],goods_price[j],goods_price[k],max_price);
			}
		}
		std::cout << max_price << std::endl;
	}

    return 0;
}

Re: pohの「お仕事」が…

Posted: 2013年12月26日(木) 12:59
by ももうまい
すいません1か所ミスがありました。
先ほどのソースコードの36行目
check(campaign_price,goods_price[j],goods_price[k],max_price);

if(j!=k){

}
で囲まれています。
修正 ↓

コード:

#include<iostream>

void check(int campaign_price,int goods1_price,int goods2_price,int &max_price){
	int price=goods1_price+goods2_price;
	if(price <= campaign_price){
		if(price > max_price){
			max_price=price;
		}
	}
}

int main(){
	int goods_num;
	int days_num;
	const int max_goods_num=500000,max_days_num=300;
	static int goods_price[max_goods_num];
	static int campaign_price[max_days_num];
	int max_price;

	std::cin >> goods_num >> days_num;

	for(int i=0;i<goods_num;++i){
		std::cin >> goods_price[i];
	}

	for(int i=0;i<days_num;++i){
		std::cin >> campaign_price[i];
	}
	
	std::cout << std::endl;

	for(int i=0;i<days_num;i++){
		max_price=0;
		for(int j=0;j<goods_num;j++){
			for(int k=0;k<goods_num;k++){
				if(j!=k){
					check(campaign_price[i],goods_price[j],goods_price[k],max_price);
				}
			}
		}
		std::cout << max_price << std::endl;
	}

    return 0;
}

Re: pohの「お仕事」が…

Posted: 2013年12月26日(木) 13:10
by みけCAT
問題はこれですね?
https://paiza.jp/poh/ec-campaign

30行目の改行は、なぜ出力しているのですか?
蛇足ではないですか?

Re: pohの「お仕事」が…

Posted: 2013年12月26日(木) 14:52
by ももうまい
ありがとうございます!
試しに消したら成功w
ただ時間的にTest case1しか通過しなかったので33点でした。

にしても何で最初は「正解」と出るのでしょう?

Re: pohの「お仕事」が…

Posted: 2013年12月26日(木) 14:55
by ももうまい
ちなみにあの改行は見やすくするためにやりましたが
全くの蛇足だったってことですねw
本当にありがとうございます。