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

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

ただいまの
回答率

90.45%

  • C++

    4552questions

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

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

受付中

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 1,483
退会済みユーザー

退会済みユーザー

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;
}

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

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

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

#include <iostream>
#include <vector>
#include <cstdint>
int main(){
  std::ios::sync_with_stdio(false);
  std::vector<uint8_t> you;
  std::vector<uint8_t> sold;
  auto in_f = []() -> std::size_t{ std::size_t in; std::cin >> in; return in; };
  const size_t total_num = in_f();
  //allocate
  you.resize(total_num);
  sold.resize(total_num);
  const size_t you_have = in_f();
  for(size_t in, i = 0; i < you_have && std::cin >> in; ++i) you[in] ^= 1;
  const size_t sold_num = in_f();
  for(size_t in, i = 0; i < sold_num && std::cin >> in; ++i) sold[in] ^= 1;
  size_t n = 0;
  for(size_t i = 0; i < total_num; ++i){
    if(you[i] & sold[i]){
      if(n) std::cout << ' ';
      std::cout << i;
      ++n;
    }
  }
  if(n) std::cout << "None";
  return 0;
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C++

    4552questions

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

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