前提
対象の問題
疑問
配列の初期化をするかしないかでACするかどうかが変わっているのですが、なぜそうなるのかわかっていないです。
下記に全体のコードをしめしていますが、
c++
1 int as[200001] = {0}, bs[200001] = {0};
のように配列を初期化しているとacとなります。
なぜ初期化しない
c++
1 int as[200001], bs[200001];
のようなコードではダメなのでしょうか?
1ケースだけwaとなっているのですがどのようなケースで間違いとなるのか想像がつかなかったのでご教授いただけると幸いです。
対象のコード
acとなるコード
c++
1 2#include <bits/stdc++.h> 3 4#define rep(i, n) for (int i = 0; i < (n); ++i) 5#define all(obj) (obj).begin(), (obj).end() 6#define bit(n) (1LL << (n)) 7 8typedef long long ll; 9 10using namespace std; 11 12int main() { 13 cin.tie(0); 14 ios::sync_with_stdio(false); 15 16 int n,m; 17 cin>>n>>m; 18 19 int as[200001] = {0}, bs[200001] = {0}; 20 21 rep(i,m) { 22 int a,b; 23 cin>>a>>b; 24 25 if(a==1) as[b-1] = 1; 26 if(b==n) bs[a-1] = 1; 27 } 28 29 rep(i,m) { 30 int a = as[i]; 31 int b = bs[i]; 32 33 if(a==1 and b==1) { 34 cout<<"POSSIBLE"; 35 return 0; 36 } 37 } 38 39 cout<<"IMPOSSIBLE"; 40 41 return 0; 42} 43
waとなるコード
c++
1 2#include <bits/stdc++.h> 3 4#define rep(i, n) for (int i = 0; i < (n); ++i) 5#define all(obj) (obj).begin(), (obj).end() 6#define bit(n) (1LL << (n)) 7 8typedef long long ll; 9 10using namespace std; 11 12int main() { 13 cin.tie(0); 14 ios::sync_with_stdio(false); 15 16 int n,m; 17 cin>>n>>m; 18 19 int as[200001], bs[200001]; 20 21 rep(i,m) { 22 int a,b; 23 cin>>a>>b; 24 25 if(a==1){ 26 as[b-1] = 1; 27 } 28 29 if(b==n) { 30 bs[a-1] = 1; 31 } 32 } 33 34 35 rep(i,m) { 36 int a = as[i]; 37 int b = bs[i]; 38 39 if(a==1 and b==1) { 40 cout<<"POSSIBLE"; 41 return 0; 42 } 43 } 44 45 cout<<"IMPOSSIBLE"; 46 47 return 0; 48}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/10 15:44
2020/06/11 01:10