pohの「お仕事」が…

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ももうまい

pohの「お仕事」が…

#1

投稿記事 by ももうまい » 12年前

今、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の「お仕事」が…

#2

投稿記事 by ももうまい » 12年前

すいません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;
}

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: pohの「お仕事」が…

#3

投稿記事 by みけCAT » 12年前

問題はこれですね?
https://paiza.jp/poh/ec-campaign

30行目の改行は、なぜ出力しているのですか?
蛇足ではないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ももうまい

Re: pohの「お仕事」が…

#4

投稿記事 by ももうまい » 12年前

ありがとうございます!
試しに消したら成功w
ただ時間的にTest case1しか通過しなかったので33点でした。

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

ももうまい

Re: pohの「お仕事」が…

#5

投稿記事 by ももうまい » 12年前

ちなみにあの改行は見やすくするためにやりましたが
全くの蛇足だったってことですねw
本当にありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る