プログラミングコンテストにおける C++ での標準入出力のまとめ

入力

1行に1要素の場合

#include <bits/stdc++.h>
using namespace std;

int main() {
  int a;
  
  cin >> a;
}

入力が小数、文字列の場合は, int の部分をそれぞれ double, string にすればよい

1行にスペース区切りで複数要素の場合

  • 2つの数字を別の変数 N, M に
#include <bits/stdc++.h>
using namespace std;

int main(){
  int N, M;
  
  cin >> N >> M ;
}

入力が小数、文字列の場合は, int の部分をそれぞれ double, string にすればよい

  • 複数の数字をベクトル vec に
#include <bits/stdc++.h>
using namespace std;
// int N が既に与えられているとする. 

int main(){
  vector<int> vec(N);
  for (int i = 0; i < N; i++) {
    cin >> vec.at(i);
  }
}

C++ の標準入力においては半角空白も改行も同列に区切り文字と見なされるため, 入力が

0 1 2

であっても,

0
1
2

であっても動作に影響はない.

array を使う方法もあるが、AtCoderは初心者はvector を使うほうがいいと述べている.
https://atcoder.jp/contests/apg4b/tasks/APG4b_n

出力

1要素の出力

  • 文字列または数字 A を改行つきで表示
#include <bits/stdc++.h>
using namespace std;

int main(){
  
  cout << A << endl;
}

複数要素の出力

  • ベクトル vec を1要素ごとに改行して出力
#include <bits/stdc++.h>
using namespace std;

int main(){
  
  for(auto v: vec){
    cout << v << endl;
  }
}
  • リスト vec を空白区切りで出力
#include <bits/stdc++.h>
using namespace std;

int main(){
  
  for (int i = 0; i < vec.size()-1; i ++){
    cout << vec.at(i) << " ";
  }
  cout << vec.back() << endl;
}