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

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

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

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

2回答

3167閲覧

[C++]paizaオンラインハッカソン7 恋愛SLG: プログラミングで彼女をつくる の 「眼帯」 の回答

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2016/01/08 12:53

C++を指定して提出するとエラーになります。
しかし、提出前確認は通ります。
Noneも出力できました。
が、全然自信がないので間違っているところを教えて欲しいです。
根本的にやり方がめちゃくちゃだったりしたらゴメンなさい…(汗
ちなみに異常な値入れられた時の対処とかはしてません。

//-------------問題-------------//
一枚目
二枚目

//-------------自分の回答-------------//
#include "iostream"
using namespace std;
int main(void){
string str;
cin >> str;
const int N = stoi(str);
int *x = new int[N];
for(int i=0;i<N;i++) x[i]=0;
int *y = new int[N];
for(int i=0;i<N;i++) y[i]=0;
cin >> str;
int M12= stoi(str);
for(int i=0; i<M12; i++){
cin >> str;
x[stoi(str)-1] = 1;
}
cin >> str;
M12 = stoi(str);
for(int i=0; i<M12; i++){
cin >> str;
y[stoi(str)-1] = 1;
}
for(int i=0;i<N;i++){
if( !x[i] && y[i] ){
M12 = 0;
cout << i+1;
if(i != N-1) cout << " ";
}
}
if(M12 != 0) cout << "None";
return 0;
}

//-------------こんな感じで書き足して自分なりに確認してました-------------//
#include "iostream"
using namespace std;
int main(void){
//////////////////////////////////
//ここから入力
//////////////////////////////////
string str;
cout << "入力[N]" <<endl;
cin >> str;
const int N = stoi(str);
//int x[N] = {0}; //x[N]の宣言 及び 初期化(All "0")
//int y[N] = {0};
int *x = new int[N];
for(int i=0;i<N;i++) x[i]=0;
int *y = new int[N];
for(int i=0;i<N;i++) y[i]=0;

cout << "入力[M1]" <<endl;
cin >> str;
int M12= stoi(str);

cout << "入力[x] x" << M12 <<endl;
for(int i=0; i<M12; i++){
cin >> str;
x[stoi(str)-1] = 1;
}

cout << "入力[M2]" <<endl;
cin >> str;
M12 = stoi(str);

cout << "入力[y] x" << M12 <<endl;
for(int i=0; i<M12; i++){
cin >> str;
y[stoi(str)-1] = 1;
}

//////////////////////////////////
//ここまで入力
//////////////////////////////////

/*
//デバック用(固定出力)
const int N = 8;
const int M1= 5;
int x[M1] = {1,3,4,5,6};
const int M2= 4;
int y[M2+1] = {1,2,5,6};
*/

//デバック用(入力表示)
cout << endl << "----------------" << endl;
cout << "N : " << N << endl;
cout << "x : ";
for(int i=0; i<N; i++){
cout << x[i] << " ";
} cout << endl;
cout << "y : ";
for(int i=0; i<N; i++){
cout << y[i] << " ";
} cout << endl;
cout << "----------------" << endl;
cout << endl << "買うべきなのは" << endl << endl;

//////////////////////////////////
//ここから判断
//////////////////////////////////

for(int i=0;i<N;i++){
if( !x[i] && y[i] ){
M12 = 0;
cout << i+1;
if(i != N-1) cout << " ";
}
}
if(M12 != 0) cout << "None";

//////////////////////////////////
//ここまで判断
//////////////////////////////////

cout << endl << "----------------" << endl;

cout << endl << endl; //ターミナルが見にくいから調整

return 0;
}

//宜しくお願いします。

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

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

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

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

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

guest

回答2

0

競技プログラミング系の問題では出力後には必ず改行を入れるようにとの説明が有ると思うのですが、それが見られないのが一つと、paizaの提出前確認はコンパイルが通るか否かの確認だけだったと思います。

投稿2016/01/28 08:58

Mahito_Fjn

総合スコア12

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

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

0

せめて動的確保したものくらい開放しよう・・・

そのアルゴリズムをもう少し書き直すと

cpp

1#include <iostream> 2#include <vector> 3#include <cstdint> 4int main(){ 5 std::ios::sync_with_stdio(false); 6 std::vector<uint8_t> you; 7 std::vector<uint8_t> sold; 8 auto in_f = []() -> std::size_t{ std::size_t in; std::cin >> in; return in; }; 9 const size_t total_num = in_f(); 10 //allocate 11 you.resize(total_num); 12 sold.resize(total_num); 13 const size_t you_have = in_f(); 14 for(size_t in, i = 0; i < you_have && std::cin >> in; ++i) you[in] ^= 1; 15 const size_t sold_num = in_f(); 16 for(size_t in, i = 0; i < sold_num && std::cin >> in; ++i) sold[in] ^= 1; 17 size_t n = 0; 18 for(size_t i = 0; i < total_num; ++i){ 19 if(you[i] & sold[i]){ 20 if(n) std::cout << ' '; 21 std::cout << i; 22 ++n; 23 } 24 } 25 if(n) std::cout << "None"; 26 return 0; 27}

投稿2016/01/27 08:30

yumetodo

総合スコア5850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問