JOI2006年模擬試験2 問題1@C++(65)
模擬試験1の問題5はまた今度。long longでも20桁の数全体はオーバーフローするという事実に気づかなかった(というより最大値を検証しなかった)僕の負けです。
今Pythonで調べたらlong longの最大値は9,223,372,036,854,775,807で、unsigned long longの最大値は18,446,744,073,709,551,615っぽい。この問題の20桁の数の最大値は99,999,999,999,999,999,999なのでオーバーフロー*1する。
#include <cstdio> #include <algorithm> #include <vector> using namespace std; int main(int argc,char* argv[]) { int n,m; scanf("%d\n",&n); scanf("%d\n",&m); int current=m; int max_count=m; for(int i=0;i<n;i++) { int in_count,out_count; scanf("%d %d\n",&in_count,&out_count); current+=in_count-out_count; if(current<0) { max_count=0; break; } max_count=max(max_count,current); } printf("%d\n",max_count); return 0; }
*1:そういえば0verflowとかいうゲームブランドがあったようなしかも会社がスタックだったりキャラ名にHello,worldとHello,wordをつけるという