XcodeとC++で競技プログラミングするときの初期設定の一例

思った以上に手間取ったので他の人のためにメモ。

main.cppとテストケース用のinput.txtを同じ位置に置く。XcodeはRunしたときの実行ディレクトリがmain.cppとは異なる位置で実行されるので、http://d.hatena.ne.jp/nakamura001/20120729/1343520758 のようにXcodeで設定を変更するとinput.txtが読めるようになり、cinから取れるようになる。(Visual Studio for Macを使った方が良かったのかも)

例えばこの問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0001 で、コードを書いたらRunしてローカルでSample Input, Samle Outputの対応が取れていることを確認する。

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, const char * argv[]) {
    
    // input from txt
    std::ifstream in("input.txt");
    std::cin.rdbuf(in.rdbuf());
    
    vector<int> heights(10);
    for (int i=0; i<10; i++){
        cin >> heights[i];
    }
    sort(heights.begin(), heights.end(), greater<int>());
    
    for (int i=0; i<3; i++){
        cout << heights[i] << endl;
    }
    
    return 0;
}

提出するときは、// inut from textからの3行を削除して提出すると通る。通った例 http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2314267#1

C++で提出している人たちは速度のためにscanfで読んでいる人が多いが、cinで大抵は十分とchokudaiさんが書いていたのでこのまま進めよう。これでC++で書く環境ができたので、やりたかった「PythonでTime Limit Error」になる問題をC++で書いたら通るか試してみる。