SRM 481 DIV 2
また0点…どんどん緑コーダーが遠ざかっていく…
しかし、さっき手元でデバッグしていたら、本当の恐怖はそんなモンではなかった…
250点問題(誤答)
#include <cstdio> #include <cstdlib> #include <cmath> #include <climits> #include <cfloat> #include <map> #include <utility> #include <set> #include <iostream> #include <memory> #include <string> #include <vector> #include <algorithm> #include <functional> #include <sstream> #include <complex> #include <stack> #include <queue> using namespace std; class CircleMarket { public: int makePurchases(vector <int> openTime, vector <int> closeTime, int travelTime) { bool ab[openTime.size()]; int total = 0, bought = 0, lastbought = 0, curtime = 0; while(1){ bought = 0; for(int i = 0; i < openTime.size(); i++){ if(openTime[i] <= curtime && curtime <= closeTime[i]){ if(!ab[i]){ bought++; ab[i] = true; } } curtime += travelTime; } total += bought; int flag = 0; for(int i = 0; i < closeTime.size(); i++){ if(curtime <= closeTime[i]){ flag = 1; break; } } if(!flag) break; }; return total; } };
これでSystem Test Failedした。一見、何がおかしいのだろうか、と思うのだが…
250点問題(正答)
#include <cstdio> #include <cstdlib> #include <cmath> #include <climits> #include <cfloat> #include <map> #include <utility> #include <set> #include <iostream> #include <memory> #include <string> #include <vector> #include <algorithm> #include <functional> #include <sstream> #include <complex> #include <stack> #include <queue> using namespace std; class CircleMarket { public: int makePurchases(vector <int> openTime, vector <int> closeTime, int travelTime) { vector<bool> ab(openTime.size()); int total = 0, bought = 0, lastbought = 0, curtime = 0; while(1){ bought = 0; for(int i = 0; i < openTime.size(); i++){ if(openTime[i] <= curtime && curtime <= closeTime[i]){ if(!ab[i]){ bought++; ab[i] = true; } } curtime += travelTime; } total += bought; int flag = 0; for(int i = 0; i < closeTime.size(); i++){ if(curtime <= closeTime[i]){ flag = 1; break; } } if(!flag) break; }; return total; } };
違いがお分かり頂けただろうか。そう、vector
このミスが何故痛いかというと、手元のCodeProcessorでテストすると全部Passedするのだが、サーバー側でTestすると、最初に与えられているテストケースからして1問も通らないという事だ!
(まあそりゃさ、autoな変数が中にゴミが入ってる事ぐらい分かるけどさ、でもそもそも慌てて、こんな書き方したの自体はじめてだったし…)
900点問題はもうデバッグする気も失せた。あとは野となれ山となれ…