WAが出て、後半の数え上げでミスってるかと思ったら前半で普通に嘘をやってた
それ確かに答え1にしたらまずい、それはそう
signed main(){ int N;cin >> N; N--; vector<int>B(N); rep(i,N)cin >> B[i]; vector<int>nowmax(N+1,0); bool fl = false; int ret = 0; rep(i,N){ nowmax[i+1] = max(B[i],nowmax[i]); if(nowmax[i+1]-nowmax[i]>1){ if(nowmax[i+1]-nowmax[i]>2||fl){cout << 0 << endl;return 0;} fl = true; //nowmax[j]=nowmax[i]であるようなものの個数? rep(j,i+1)if(nowmax[j]==nowmax[i])ret++; } } if(fl){ // cout << 1 << endl; //↑は嘘で、 cout << ret << endl; return 0; } int res = 0; B.insert(B.begin(),0); for(int i = 0;i <= N;i++){//i文字目(1-indexed)の直後 res+=nowmax[i]+1; // if(i>0){ // if(B[i-1]==B[i])res--; // } } res-=N; cout << res << endl; }