結果
問題 |
No.910 素数部分列
|
ユーザー |
![]() |
提出日時 | 2020-03-21 06:51:35 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 327 ms / 1,000 ms |
コード長 | 2,080 bytes |
コンパイル時間 | 1,718 ms |
コンパイル使用メモリ | 172,448 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-12-17 18:17:22 |
合計ジャッジ時間 | 6,154 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<ll> vl; typedef pair<int,int> pii; typedef int _loop_int; #define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i) #define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i) #define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i) #define DEBUG(x) cout<<#x<<": "<<x<<endl #define DEBUG2(x,y) cout<<#x<<": "<<x<<" "<<#y<<": "<<y<<endl #define DEBUG_VEC(v) cout<<#v<<":";REP(i,v.size())cout<<" "<<v[i];cout<<endl #define ALL(a) (a).begin(),(a).end() const ll MOD = 1000000007ll; #define FIX(a) ((a)%MOD+MOD)%MOD int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin>>n; string s; //string tmp; queue<char> q; int ans = 0; REP(i,n){ char c; cin>>c; if(c=='3'||c=='5'||c=='7'){ ans++; continue; } s += c; } if(s==""){ cout << ans << endl; return 0; } string ss=""; bool found19=false; do{ found19=false; ss=s[0]; FOR(i,1,s.size()){ ss += s[i]; if(ss[ss.size()-2]=='1' && ss[ss.size()-1]=='9'){ found19=true; ss = ss.substr(0,ss.size()-2); ans++; } } s=ss; }while(found19); int cnt1=0; int cnt9=0; REP(i,s.size()){ if(s[i]=='1') cnt1++; if(s[i]=='9') cnt9++; } //DEBUG2(cnt1,cnt9); string tmp =""; FORR(i,1,s.size()){ if(s[i]!='1') continue; tmp =""; FORR(j,0,i){ if(s[j]=='9'){ if(tmp.size()==2){ ans+=1; cnt1-=1; cnt9-=2; tmp=""; break; } else tmp+="9"; } } if(cnt9<2) break; } //DEBUG2(cnt1,cnt9); ans += cnt1/2; cout << ans << endl; return 0; }