結果
問題 | No.1535 五七五 |
ユーザー |
![]() |
提出日時 | 2021-06-06 18:42:59 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 87 ms / 2,000 ms |
コード長 | 2,244 bytes |
コンパイル時間 | 898 ms |
コンパイル使用メモリ | 105,432 KB |
実行使用メモリ | 7,392 KB |
最終ジャッジ日時 | 2024-11-23 03:33:18 |
合計ジャッジ時間 | 2,582 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#include <cmath>#include <deque>#include <algorithm>#include <iterator>#include <list>#include <tuple>#include <map>#include <unordered_map>#include <queue>#include <set>#include <unordered_set>#include <stack>#include <string>#include <vector>#include <fstream>#include <iostream>#include <functional>#include <numeric>#include <iomanip>#include <stdio.h>//eolibraries#define lnf 3999999999999999999#define inf 999999999#define PI 3.14159265359#define endl "\n"#define fi first#define se second#define pb push_back#define eb emplace_back#define ll long long#define all(c) (c).begin(),(c).end()#define sz(c) (int)(c).size()#define mkp(a,b) make_pair(a,b)#define make_unique(a) sort(all(a)),a.erase(unique(all(a)),a.end())#define rsz(a,n) a.resize(n)#define pii pair <int,int>#define rep(i,n) for(int i = 0 ; i < n ; i++)#define drep(i,n) for(int i = n-1 ; i >= 0 ; i--)#define crep(i,x,n) for(int i = x ; i < n ; i++)#define vi vector <int>#define vec(s) vector<s>#define rsz(a,n) a.resize(n)#define rszv(a,n,v) a.resize(n,v)#define fcin ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);//eodefineconst int max_n = 503002;using namespace std;int n;int a,b,qe;int x[max_n],ps[max_n];int main(){fcin;cin>>n;cin>>a>>b>>qe;rep(i,n) {string s;cin>>s;x[i]=sz(s);}rep(i,n){if(i==0)ps[i]=x[i];else ps[i]=x[i]+ps[i-1];}vi p={0,0,0};vi sx={0,0,0};int ans=0,tkl=-1;rep(i,n) {int l = i , r = n-1 , c = -1;while(l <= r) {int m=(l+r)/2;if(ps[m]-(i-1>=0?ps[i-1]:0)<a) {l=m+1;}else{c=m;r=m-1;}}if(c==-1 or ps[c] - (i-1>=0?ps[i-1]:0) != a) continue;int p0=c;// cout<<c<<" " <<p0<<"\n";l = c + 1 , r = n - 1 , c = -1;while(l<=r) {int m=(l+r)/2;if(ps[m]-ps[p0]<b){l=m+1;}else{c=m;r=m-1;}}// cout << ps[c]-ps[p0] << "\n";int p1=c;if(c==-1 or ps[c] - ps[p0] != b) continue;l = c + 1 , r = n - 1 , c = -1;while(l<=r) {int m=(l+r)/2;if(ps[m]-ps[p1]<qe) {l=m+1;}else{c=m;r=m-1;}}// cout << c << " " << p1 << "\n";if(c==-1 or ps[c]-ps[p1] != qe)continue;ans++;}cout<<ans<<"\n";/**/return 0;}