結果
| 問題 |
No.884 Eat and Add
|
| コンテスト | |
| ユーザー |
tonegawa
|
| 提出日時 | 2020-08-12 13:20:39 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,286 bytes |
| コンパイル時間 | 1,259 ms |
| コンパイル使用メモリ | 113,556 KB |
| 最終ジャッジ日時 | 2025-01-12 21:19:08 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 5 WA * 4 |
ソースコード
#include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <functional>
#include <iomanip>
#define vll vector<ll>
#define vvvl vector<vvl>
#define vvl vector<vector<ll>>
#define VV(a, b, c, d) vector<vector<d>>(a, vector<d>(b, c))
#define VVV(a, b, c, d) vector<vvl>(a, vvl(b, vll (c, d)));
#define re(c, b) for(ll c=0;c<b;c++)
#define all(obj) (obj).begin(), (obj).end()
typedef long long int ll;
typedef long double ld;
using namespace std;
ll f(string s){
bool f = false;
for(int i=0;i<s.size()&&!f;i++) if(s[i]=='1') f = true;
if(!f) return 0;
ll l = 0, r = 0;
for(int i=0;i<s.size();i++, l++) if(s[i]=='1') break;
for(int i=0;i<s.size();i++, r++) if(s[s.size()-1-i]=='1') break;
ll ocnt = 0, zcnt = 0;
for(int i=l;i<s.size()-r;i++) (s[i]=='1'?ocnt:zcnt)++;
if(ocnt==1) return 1;
return 2 + zcnt;
}
int main(int argc, char const *argv[]) {
string s;std::cin >> s;
s += "00";
//2個以上の0で分離
ll ans = 0;
string tmp = "";
for(int i=0;i<s.size();i++){
tmp += s[i];
if(i!=0&&s[i]=='0'&&s[i-1]=='0'){
ans += f(tmp);
tmp = "";
s[i] = '1';
}
}
std::cout << ans << '\n';
return 0;
}
tonegawa