Skip to content

ABC-136

A

URLURL\:\to

解法


B

URLURL\:\to

解法


C

URLURL\:\to https://atcoder.jp/contests/abc136/tasks/abc136_c

#愚直

C

int main(void) {
ll n;
scanf("%lld", &n);
ll h[n+1];
rep(i, 0, n) scanf("%lld", &h[i]); h[n]=10000000000+1; h[n+1]=10000000000+1;
char ans[5] = "Yes";
sh flg = -1;
rep(i,0,n) {
if (h[i]==h[i+1]+1) {
if (flg==-1) flg *= -1;
else if (flg == 1) {
strcpy(ans, "No");
break;
}
}
else if (h[i]>=(h[i+1]+2)) {
strcpy(ans, "No");
break;
}
else if (h[i]<h[i+1]) {
if (flg==1) flg *= -1;
}
}
printf("%s\n", ans);
return 0;
}

解法

前から見ていき、次の段が今より22小さいならば即終了、11小さいならば、それ以降にまた11以上下がるならばその時点で終了、11段でも上昇すればリセット。という条件で回していけば、題意を満たすことができる。


D

URLURL\:\to

解法


E

URLURL\:\to

解法