結果
| 問題 |
No.3015 右に寄せろ!
|
| ユーザー |
|
| 提出日時 | 2025-08-24 15:33:50 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 43 ms / 2,000 ms |
| コード長 | 662 bytes |
| コンパイル時間 | 3,271 ms |
| コンパイル使用メモリ | 275,224 KB |
| 実行使用メモリ | 9,036 KB |
| 最終ジャッジ日時 | 2025-08-24 15:33:56 |
| 合計ジャッジ時間 | 5,565 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 36 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i = 0; i< (n); ++i)
#define repi(i, a, b) for (int i = (a); i < (b); ++i)
#define all(x) (x).begin(), (x).end()
#define fore(i, a) for(auto &i:a)
using ll = long long;
int main() {
string s;
cin >> s;
ll one = 0;
ll two = 0;
ll idx = s.size()-1;
ll ans = 0;
ll n = s.size();
while(idx >= 0){
if(idx == 0){
break;
}
if(s[idx] == '1' && s[idx-1] == '1'){
ans += n-1-idx-one-2*two;
two++;
idx-=2;
}
if(s[idx] == '1' && s[idx-1] == '0'){
one++;
idx-=2;
}
if(s[idx] == '0'){
idx--;
}
}
cout << ans << endl;
}