以下のリンクに示す問題を解いていたのですが,サンプルケースといくつかのケースでは正解,どのようなケースか見えないものでいくつか不正解となってしまい,なぜ間違っているのかを見つけることが出来ませんでした.
式等にミスがあったりすればご指摘をお願いいたいます.
またC++は昨日勉強し始めたばかりで把握している機能があまりないので,この問題を解くうえでもっと便利なものがあれば教えていただきたいです.問題の傾向的に今回はあまりなさそうだなとは感じますが.
また,コードについてなのですが,最後の条件分岐はsignの位置によって変える必要がないのはほぼ書き終わったあとに気づいたので言及してくださらなくても問題ありません.
よろしくお願いいします.
C++
1#include<stdio.h> 2#include<iostream> 3#include<string> 4#include<memory> 5int main(){ 6 7 int N,range; 8 int *series; 9 std::cin>>N>>range; 10 try{ 11 series=new int[N]; 12 }catch(const std::bad_alloc e){ 13 std::cout<<"cannnot be allocated."<<std::endl; 14 } 15 int min=1000001; 16 int sign=0; 17 for(int i=0;i<N;i++) { 18 std::cin>>series[i]; 19 if(series[i]<min) { 20 min=series[i]; 21 sign=i; 22 } 23 } 24 25 //std::cout<<sign<<std::endl; 26 27 int count=0; 28 if(sign==0){ 29 if((N-1)%(range-1)==0){ 30 count=(N-1)/(range-1); 31 } 32 else{ 33 count=(N-1)/(range-1)+1; 34 } 35 } 36 else{ 37 if(sign%(range-1)==0) count=sign/(range-1); 38 else count=sign/(range-1)+1; 39 40 //std::cout<<count<<std::endl; 41 42 if((N-(sign+1))%(range-1)==0) count+=(N-(sign+1))/(range-1); 43 else count+=(N-(sign+1))/(range-1)+1; 44 } 45 46 std::cout<<count<<std::endl; 47 48 49 delete series; 50 return 0; 51} 52
回答2件
あなたの回答
tips
プレビュー