第6回日本情報オリンピック 予選の過去問から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
「競技プログラミング」を略して、「競プロ」などと呼ばれています。
#F - 通学経路
僕が作成、提出したコードは、以下のとおりです。
/* AtCoder Problems in C++ #F - 通学経路 https://atcoder.jp/contests/joi2007yo/tasks/joi2007yo_f 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int a,b,n; cin>>a>>b>>n; vector<int> c1(n),c2(n); for(int i=0;i<n;i++){ cin>>c1[i]>>c2[i]; } vector<vector<int>> arr(a+1,vector<int>(b+1,0)); vector<vector<int>> arr2(a+1,vector<int>(b+1,0)); for(int i=0;i<n;i++){ arr2[c1[i]][c2[i]]=100; } for(int i=1;i<=a;i++){ for(int j=1;j<=b;j++){ if((i==1 && j==1) && arr2[i][j]==0){ arr[i][j]=1; }else if(arr2[i][j]==100){ arr[i][j]=0; }else{ arr[i][j]=arr[i-1][j]+arr[i][j-1]; } } } cout<<arr[a][b]<<endl; return 0; }