ARC 088
C
何回2倍できるかを数える
#include <bits/stdc++.h> #define REP(i,n) for(int i=0; i<(int)(n); ++i) #define FOR(i,k,n) for(int i=(k);i<(int)(n);++i) typedef long long int ll; using namespace std; int main(void) { ll X, Y; cin >> X >> Y; int ans = 0; while(X <= Y) { X *= 2; ans++; } cout << ans << endl; }
Submission #1895699 - AtCoder Regular Contest 088
D
文字列長をn
、0と1が切り替わるところをk
(1-indexed)としたとき、max(k, n-k)
の最大値が答え。全ての文字が同じ場合はn
が答え。
#include <bits/stdc++.h> #define REP(i,n) for(int i=0; i<(int)(n); ++i) #define FOR(i,k,n) for(int i=(k);i<(int)(n);++i) typedef long long int ll; using namespace std; int main(void) { string S; cin >> S; int n = S.size(); int ans = n; for(int k=0; k<n; ++k) { if(S[k] != S[k+1]) { ans = min(ans, max(k+1, n-k-1)); } } cout << ans << endl; }