QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#292957 | #4882. String Strange Sum | KING_UT | AC ✓ | 697ms | 131180kb | C++20 | 23.6kb | 2023-12-28 17:43:14 | 2023-12-28 17:43:15 |
Judging History
answer
#ifndef LOCAL
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")
#endif
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
//#define int ll
#define rng(i,a,b) for(int i=int(a);i<int(b);i++)
#define rep(i,b) rng(i,0,b)
#define gnr(i,a,b) for(int i=int(b)-1;i>=int(a);i--)
#define per(i,b) gnr(i,0,b)
#define pb push_back
#define eb emplace_back
#define a first
#define b second
#define bg begin()
#define ed end()
#define all(x) x.bg,x.ed
#define si(x) int(x.size())
#ifdef LOCAL
#define dmp(x) cerr<<__LINE__<<" "<<#x<<" "<<x<<endl
#else
#define dmp(x) void(0)
#endif
template<class t,class u> bool chmax(t&a,u b){if(a<b){a=b;return true;}else return false;}
template<class t,class u> bool chmin(t&a,u b){if(b<a){a=b;return true;}else return false;}
template<class t> using vc=vector<t>;
template<class t> using vvc=vc<vc<t>>;
using pi=pair<int,int>;
using vi=vc<int>;
template<class t,class u>
ostream& operator<<(ostream& os,const pair<t,u>& p){
return os<<"{"<<p.a<<","<<p.b<<"}";
}
template<class t> ostream& operator<<(ostream& os,const vc<t>& v){
os<<"{";
for(auto e:v)os<<e<<",";
return os<<"}";
}
#define mp make_pair
#define mt make_tuple
#define one(x) memset(x,-1,sizeof(x))
#define zero(x) memset(x,0,sizeof(x))
#ifdef LOCAL
void dmpr(ostream&os){os<<endl;}
template<class T,class... Args>
void dmpr(ostream&os,const T&t,const Args&... args){
os<<t<<" ";
dmpr(os,args...);
}
#define dmp2(...) dmpr(cerr,__LINE__,##__VA_ARGS__)
#else
#define dmp2(...) void(0)
#endif
using uint=unsigned;
using ull=unsigned long long;
template<class t,size_t n>
ostream& operator<<(ostream&os,const array<t,n>&a){
return os<<vc<t>(all(a));
}
template<int i,class T>
void print_tuple(ostream&,const T&){
}
template<int i,class T,class H,class ...Args>
void print_tuple(ostream&os,const T&t){
if(i)os<<",";
os<<get<i>(t);
print_tuple<i+1,T,Args...>(os,t);
}
template<class ...Args>
ostream& operator<<(ostream&os,const tuple<Args...>&t){
os<<"{";
print_tuple<0,tuple<Args...>,Args...>(os,t);
return os<<"}";
}
ll read(){
ll i;
cin>>i;
return i;
}
vi readvi(int n,int off=0){
vi v(n);
rep(i,n)v[i]=read()+off;
return v;
}
pi readpi(int off=0){
int a,b;cin>>a>>b;
return pi(a+off,b+off);
}
template<class t>
void print_single(t x,int suc=1){
cout<<x;
if(suc==1)
cout<<"\n";
if(suc==2)
cout<<" ";
}
template<class t,class u>
void print_single(const pair<t,u>&p,int suc=1){
print_single(p.a,2);
print_single(p.b,suc);
}
template<class T>
void print_single(const vector<T>&v,int suc=1){
rep(i,v.size())
print_single(v[i],i==int(v.size())-1?suc:2);
}
template<class T>
void print_offset(const vector<T>&v,ll off,int suc=1){
rep(i,v.size())
print_single(v[i]+off,i==int(v.size())-1?suc:2);
}
template<class T,size_t N>
void print_single(const array<T,N>&v,int suc=1){
rep(i,N)
print_single(v[i],i==int(N)-1?suc:2);
}
template<class T>
void print(const T&t){
print_single(t);
}
template<class T,class ...Args>
void print(const T&t,const Args&...args){
print_single(t,2);
print(args...);
}
string readString(){
string s;
cin>>s;
return s;
}
template<class T>
T sq(const T& t){
return t*t;
}
void YES(bool ex=true){
cout<<"YES\n";
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}
void NO(bool ex=true){
cout<<"NO\n";
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}
void Yes(bool ex=true){
cout<<"Yes\n";
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}
void No(bool ex=true){
cout<<"No\n";
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}
//#define CAPITAL
/*
void yes(bool ex=true){
#ifdef CAPITAL
cout<<"YES"<<"\n";
#else
cout<<"Yes"<<"\n";
#endif
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}
void no(bool ex=true){
#ifdef CAPITAL
cout<<"NO"<<"\n";
#else
cout<<"No"<<"\n";
#endif
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}*/
void possible(bool ex=true){
#ifdef CAPITAL
cout<<"POSSIBLE"<<"\n";
#else
cout<<"Possible"<<"\n";
#endif
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}
void impossible(bool ex=true){
#ifdef CAPITAL
cout<<"IMPOSSIBLE"<<"\n";
#else
cout<<"Impossible"<<"\n";
#endif
if(ex)exit(0);
#ifdef LOCAL
cout.flush();
#endif
}
constexpr ll ten(int n){
return n==0?1:ten(n-1)*10;
}
const ll infLL=LLONG_MAX/3;
#ifdef int
const int inf=infLL;
#else
const int inf=INT_MAX/2-100;
#endif
int topbit(signed t){
return t==0?-1:31-__builtin_clz(t);
}
int topbit(ll t){
return t==0?-1:63-__builtin_clzll(t);
}
int topbit(ull t){
return t==0?-1:63-__builtin_clzll(t);
}
int botbit(signed a){
return a==0?32:__builtin_ctz(a);
}
int botbit(ll a){
return a==0?64:__builtin_ctzll(a);
}
int botbit(ull a){
return a==0?64:__builtin_ctzll(a);
}
int popcount(signed t){
return __builtin_popcount(t);
}
int popcount(ll t){
return __builtin_popcountll(t);
}
int popcount(ull t){
return __builtin_popcountll(t);
}
int bitparity(ll t){
return __builtin_parityll(t);
}
bool ispow2(int i){
return i&&(i&-i)==i;
}
ll mask(int i){
return (ll(1)<<i)-1;
}
ull umask(int i){
return (ull(1)<<i)-1;
}
ll minp2(ll n){
if(n<=1)return 1;
else return ll(1)<<(topbit(n-1)+1);
}
bool inc(int a,int b,int c){
return a<=b&&b<=c;
}
template<class t> void mkuni(vc<t>&v){
sort(all(v));
v.erase(unique(all(v)),v.ed);
}
ll rand_int(ll l, ll r) { //[l, r]
//#ifdef LOCAL
static mt19937_64 gen;
/*#else
static mt19937_64 gen(chrono::steady_clock::now().time_since_epoch().count());
#endif*/
return uniform_int_distribution<ll>(l, r)(gen);
}
ll rand_int(ll k){ //[0,k)
return rand_int(0,k-1);
}
template<class t>
void myshuffle(vc<t>&a){
rep(i,si(a))swap(a[i],a[rand_int(0,i)]);
}
template<class t,class u>
int lwb(const vc<t>&v,const u&a){
return lower_bound(all(v),a)-v.bg;
}
template<class t,class u>
bool bis(const vc<t>&v,const u&a){
return binary_search(all(v),a);
}
vvc<int> readGraph(int n,int m){
vvc<int> g(n);
rep(i,m){
int a,b;
cin>>a>>b;
//sc.read(a,b);
a--;b--;
g[a].pb(b);
g[b].pb(a);
}
return g;
}
vvc<int> readTree(int n){
return readGraph(n,n-1);
}
template<class t>
vc<t> presum(const vc<t>&a){
vc<t> s(si(a)+1);
rep(i,si(a))s[i+1]=s[i]+a[i];
return s;
}
vc<ll> presum(const vi&a){
vc<ll> s(si(a)+1);
rep(i,si(a))s[i+1]=s[i]+a[i];
return s;
}
//BIT で数列を管理するときに使う (CF850C)
template<class t>
vc<t> predif(vc<t> a){
gnr(i,1,si(a))a[i]-=a[i-1];
return a;
}
template<class t>
vvc<ll> imos(const vvc<t>&a){
int n=si(a),m=si(a[0]);
vvc<ll> b(n+1,vc<ll>(m+1));
rep(i,n)rep(j,m)
b[i+1][j+1]=b[i+1][j]+b[i][j+1]-b[i][j]+a[i][j];
return b;
}
//verify してないや
void transvvc(int&n,int&m){
swap(n,m);
}
template<class t,class... Args>
void transvvc(int&n,int&m,vvc<t>&a,Args&...args){
assert(si(a)==n);
vvc<t> b(m,vi(n));
rep(i,n){
assert(si(a[i])==m);
rep(j,m)b[j][i]=a[i][j];
}
a.swap(b);
transvvc(n,m,args...);
}
//CF854E
void rotvvc(int&n,int&m){
swap(n,m);
}
template<class t,class... Args>
void rotvvc(int&n,int&m,vvc<t>&a,Args&...args){
assert(si(a)==n);
vvc<t> b(m,vi(n));
rep(i,n){
assert(si(a[i])==m);
rep(j,m)b[m-1-j][i]=a[i][j];
}
a.swap(b);
rotvvc(n,m,args...);
}
//ソートして i 番目が idx[i]
//CF850C
template<class t>
vi sortidx(const vc<t>&a){
int n=si(a);
vi idx(n);iota(all(idx),0);
sort(all(idx),[&](int i,int j){return a[i]<a[j];});
return idx;
}
//vs[i]=a[idx[i]]
//例えば sortidx で得た idx を使えば単にソート列になって返ってくる
//CF850C
template<class t>
vc<t> a_idx(const vc<t>&a,const vi&idx){
int n=si(a);
assert(si(idx)==n);
vc<t> vs(n);
rep(i,n)vs[i]=a[idx[i]];
return vs;
}
//CF850C
vi invperm(const vi&p){
int n=si(p);
vi q(n);
rep(i,n)q[p[i]]=i;
return q;
}
template<class t,class s=t>
s SUM(const vc<t>&a){
return accumulate(all(a),s(0));
}
template<class t,size_t K,class s=t>
s SUM(const array<t,K>&a){
return accumulate(all(a),s(0));
}
template<class t>
t MAX(const vc<t>&a){
return *max_element(all(a));
}
template<class t>
pair<t,int> MAXi(const vc<t>&a){
auto itr=max_element(all(a));
return mp(*itr,itr-a.bg);
}
template<class A>
auto MIN(const A&a){
return *min_element(all(a));
}
template<class t>
pair<t,int> MINi(const vc<t>&a){
auto itr=min_element(all(a));
return mp(*itr,itr-a.bg);
}
vi vid(int n){
vi res(n);iota(all(res),0);
return res;
}
template<class S>
void soin(S&s){
sort(all(s));
}
template<class S,class F>
void soin(S&s,F&&f){
sort(all(s),forward<F>(f));
}
template<class S>
S soout(S s){
soin(s);
return s;
}
template<class S>
void rein(S&s){
reverse(all(s));
}
template<class S>
S reout(S s){
rein(s);
return s;
}
template<class t,class u>
pair<t,u>&operator+=(pair<t,u>&a,pair<t,u> b){
a.a+=b.a;a.b+=b.b;return a;}
template<class t,class u>
pair<t,u>&operator-=(pair<t,u>&a,pair<t,u> b){
a.a-=b.a;a.b-=b.b;return a;}
template<class t,class u>
pair<t,u> operator+(pair<t,u> a,pair<t,u> b){return mp(a.a+b.a,a.b+b.b);}
template<class t,class u>
pair<t,u> operator-(pair<t,u> a,pair<t,u> b){return mp(a.a-b.a,a.b-b.b);}
template<class t>
t gpp(vc<t>&vs){
assert(si(vs));
t res=move(vs.back());
vs.pop_back();
return res;
}
template<class t,class u>
void pb(vc<t>&a,const vc<u>&b){
a.insert(a.ed,all(b));
}
template<class t,class...Args>
vc<t> cat(vc<t> a,Args&&...b){
(pb(a,forward<Args>(b)),...);
return a;
}
template<class t,class u>
vc<t>& operator+=(vc<t>&a,u x){
for(auto&v:a)v+=x;
return a;
}
template<class t,class u>
vc<t> operator+(vc<t> a,u x){
return a+=x;
}
template<class t>
vc<t> operator+(const vc<t>&a,const vc<t>&b){
vc<t> c(max(si(a),si(b)));
rep(i,si(a))c[i]+=a[i];
rep(i,si(b))c[i]+=b[i];
return c;
}
template<class t,class u>
vc<t>& operator-=(vc<t>&a,u x){
for(auto&v:a)v-=x;
return a;
}
template<class t,class u>
vc<t>& operator-(vc<t> a,u x){
return a-=x;
}
template<class t,class u>
void remval(vc<t>&a,const u&v){
a.erase(remove(all(a),v),a.ed);
}
template<class VS,class u>
void fila(VS&vs,const u&a){
fill(all(vs),a);
}
template<class t,class u>
int findid(const vc<t>&vs,const u&a){
auto itr=find(all(vs),a);
if(itr==vs.ed)return -1;
else return itr-vs.bg;
}
template<class t>
void rtt(vc<t>&vs,int i){
rotate(vs.bg,vs.bg+i,vs.ed);
}
//N() が単位元
//VERIFY: yosupo
//CF407E
template<class N>
struct segtree{
vc<N> x;
int n,s;
segtree(){}
template<class t>
segtree(const vc<t>&a){
n=a.size();
s=1;
while(s<n){s*=2;}
x.resize(s*2);
rep(i,n)
x[s+i]=N(a[i]);
gnr(i,1,s)
x[i]=N::merge(x[i*2],x[i*2+1]);
}
//NOT Verified
segtree(int nn){
resize(nn);
}
void resize(int nn){
n=nn;
s=1;
while(s<n){s*=2;}
x.assign(s*2,N());
gnr(i,1,s)
x[i]=N::merge(x[i*2],x[i*2+1]);
}
template<class t>
void load(const vc<t>&a){
n=a.size();
s=1;
while(s<n){s*=2;}
x.resize(s*2);
rep(i,n)
x[s+i]=N(a[i]);
rng(i,n,s)
x[s+i]=N();
gnr(i,1,s)
x[i]=N::merge(x[i*2],x[i*2+1]);
}
void clear(){
rep(i,n)
x[s+i]=N();
gnr(i,1,s)
x[i]=N::merge(x[i*2],x[i*2+1]);
}
N point_get(int i){
assert(inc(0,i,n-1));
return x[i+s];
}
void point_set(int i,const N&t){
assert(inc(0,i,n-1));
i+=s;
x[i]=t;
while(i>>=1)x[i]=N::merge(x[i*2],x[i*2+1]);
}
void point_merge(int i,const N&t){
assert(inc(0,i,n-1));
i+=s;
x[i]=N::merge(x[i],t);
while(i>>=1)x[i]=N::merge(x[i*2],x[i*2+1]);
}
template<class F,class...Args>
void point_change(int i,F f,Args&&...args){
assert(inc(0,i,n-1));
i+=s;
(x[i].*f)(forward<Args>(args)...);
while(i>>=1)x[i]=N::merge(x[i*2],x[i*2+1]);
}
N composite(int b,int e){
assert(0<=b&&b<=e&&e<=n);
N lf,rt;
for(int l=b+s,r=e+s;l<r;l>>=1,r>>=1){
if (l&1){
lf=N::merge(lf,x[l]);
l++;
}
if (r&1){
r--;
rt=N::merge(x[r],rt);
}
}
return N::merge(lf,rt);
}
N getall(){
return x[1];
}
//UTPC2020E
//n 超えるかもしれない
template <class F,class... Args>
pair<int,N> max_right(int l,F f,Args&&... args){
assert((N().*f)(forward<Args>(args)...));
assert(0<=l&&l<=n);
if(l==n)return mp(n,N());
l+=s;
N sm;
assert((sm.*f)(forward<Args>(args)...));
do {
while (l % 2 == 0) l >>= 1;
if (!(N::merge(sm,x[l]).*f)(forward<Args>(args)...)){
while (l < s) {
l = (2 * l);
N tmp=N::merge(sm,x[l]);
if ((tmp.*f)(forward<Args>(args)...)) {
sm = tmp;
l++;
}
}
return mp(l - s,sm);
}
sm = N::merge(sm, x[l]);
l++;
} while ((l & -l) != l);
return mp(n,sm);
}
//UTPC2020E
template <class F,class... Args>
pair<int,N> min_left(int r,F f,Args&&... args){
assert((N().*f)(forward<Args>(args)...));
assert(0<=r&&r<=n);
if(r==0)return mp(0,N());
r+=s;
N sm;
do {
r--;
while (r > 1 && (r % 2)) r >>= 1;
if (!(N::merge(x[r],sm).*f)(forward<Args>(args)...)) {
while (r < s) {
r = (2 * r + 1);
N tmp=N::merge(x[r],sm);
if ((tmp.*f)(forward<Args>(args)...)) {
sm = tmp;
r--;
}
}
return mp(r + 1 - s,sm);
}
sm = N::merge(x[r], sm);
} while ((r & -r) != r);
return mp(0,sm);
}
//行列とか乗せて必要なのはベクトルとの積,みたいなときに使える?
//CF Goodbye 2016 E
//CF 896 F
template<class F,class T,class... Args>
T accumulate(int l,int r,F f,T t,Args&&... args) {
assert(0<=l&&l<=r&&r<=n);
static int buf[2][30];
int cnt[2]{};
for(l+=s,r+=s;l<r;l>>=1,r>>=1){
if(l&1)buf[0][cnt[0]++]=l;
if(r&1)buf[1][cnt[1]++]=r-1;
l++;
}
rep(i,cnt[0])t=(x[buf[0][i]].*f)(t,forward<Args>(args)...);
per(i,cnt[1])t=(x[buf[1][i]].*f)(t,forward<Args>(args)...);
return t;
}
};
struct MaxNode{
int v;
MaxNode(int vv=-inf):v(vv){}
static MaxNode merge(const MaxNode&a,const MaxNode&b){
return MaxNode(max(a.v,b.v));
}
bool ok(int x){return v<x;}
};
//内部でグラフをいじるから in,out を使うときは注意
//hei[v] -> heavy edge で潜っていった時,自分含めて何個あるか
//pe[v]: v->par[v] の辺の情報
//-有向木のときは上から下の辺を入れてる
//-無向木のときは下から上の辺を入れてる
//VERIFY: yosupo
//CF530F
//CodeChef Persistent Oak
//AOJ GRL5C
template<class E>
struct HLD{
vvc<E> g;
int n,rt,cnt;
vi sub,in,out,par,head,dep,hei,ni;
vc<E> pe;
int dfs1(int v,int p,int d){
par[v]=p;
dep[v]=d;
for(auto itr=g[v].bg;itr!=g[v].ed;itr++)
if(*itr==p){
pe[v]=*itr;
g[v].erase(itr);
break;
}
for(auto&e:g[v]){
pe[e]=e;
sub[v]+=dfs1(e,v,d+1);
if(sub[g[v][0]]<sub[e])
swap(g[v][0],e);
}
return sub[v];
}
void dfs2(int v,int h){
in[v]=cnt++;
head[v]=h;
for(int to:g[v])
dfs2(to,to==g[v][0]?h:to);
out[v]=cnt;
if(si(g[v]))hei[v]=hei[g[v][0]]+1;
}
HLD(){}
HLD(const vvc<E>&gg,int rr):g(gg),n(g.size()),rt(rr),cnt(0),
sub(n,1),in(n),out(n),par(n,-1),head(n),dep(n),hei(n,1),ni(n),
pe(n){
dfs1(rt,-1,0);
dfs2(rt,rt);
rep(i,n)ni[in[i]]=i;
}
int lca(int a,int b){
while(head[a]!=head[b]){
if(dep[head[a]]>dep[head[b]])
swap(a,b);
b=par[head[b]];
}
if(dep[a]>dep[b])
swap(a,b);
return a;
}
int len(int a,int b){
return dep[a]+dep[b]-dep[lca(a,b)]*2;
}
bool asde(int a,int b){
return in[a]<=in[b]&&out[b]<=out[a];
}
//UCUP 1-22 F
int adv(int a,int d){
if(hei[a]<=d)return -1;
else return ni[in[a]+d];
}
//CF692F
int getpar(int v,int len){
assert(dep[v]>=len);
int tar=dep[v]-len;
while(1){
int h=head[v];
if(dep[h]<=tar){
return ni[in[h]+(tar-dep[h])];
}
v=par[h];
}
assert(false);
}
//1st UCUP 13 G
int jump(int a,int b,int d){
int c=lca(a,b);
if(d<=(dep[a]-dep[c])){
return getpar(a,d);
}else{
d=(dep[a]+dep[b]-dep[c]*2)-d;
assert(d>=0);
return getpar(b,d);
}
}
//XX Opencup GP of Korea
//CF625 F
//2020 Multi-Uni Contest Day5 G
//CF415E
//Universal Cup 2023 Stage 1 G
vi index;
//vs を含む virtual tree を返す
//返すのは virtual tree に使われた頂点と,辺の集合
//辺の端点は,virtual tree における番号
//元の木における番号を virtual tree の頂点番号に写すのが,index という変数
//辺は ch->par の順
//virtual tree は行き掛け順で番号がついている
//特に,頂点 0 が根になるようにできている
//pair<vi,vc<pi>> tree_compress(vi vs){
void tree_compress(vi&vs,vc<pi>&es){
if(si(index)==0)index.resize(n);
assert(index.size());
auto comp = [&](int x,int y){
return in[x] < in[y];
};
sort(all(vs),comp);
assert(is_sorted(all(vs),comp));
vs.erase(unique(all(vs)),vs.ed);
int k = vs.size();
rep(i,k-1){
vs.pb(lca(vs[i],vs[i+1]));
}
sort(all(vs),comp);
vs.erase(unique(all(vs)),vs.ed);
k = vs.size();
rep(i,k) index[vs[i]] = i;
es.clear();
rng(i,1,k){
int p = lca(vs[i-1],vs[i]);
es.eb(i,index[p]);
}
//return mp(vs,es);
}
//assume a is desdendant of b
//ex=true <=> exclude b
template<class F>
void subpath_work(int a,int b,bool ex,F f){
while(1){
if(head[a]==head[b]){
f(in[b]+ex,in[a]+1);
break;
}else{
int h=head[a];
f(in[h],in[a]+1);
a=par[h];
}
}
}
//KUPC2021E
//パスに対する操作順に注意
//euler-tour 順にしたときの区間に作用していることに注意
//ex=true exclude lca(a,b) (=apply path edges)
template<class F>
void path_work(int a,int b,bool ex,F f){
int c=lca(a,b);
subpath_work(a,c,ex,f);
subpath_work(b,c,true,f);
}
//v->false
//-1->true
//root-v パス上で f(x)=true となる最も深い頂点を返す
//CF857G
template<class F>
int find_lowest(int v,F f)const{
while(v>=0){
int h=head[v];
if(!f(h)){
v=par[h];
}else{
int l=0,r=dep[v]-dep[h]+1;
while(r-l>1){
const int mid=(l+r)/2;
if(f(ni[in[h]+mid]))l=mid;
else r=mid;
}
return ni[in[h]+l];
}
}
return -1;
}
//-1->false
//v->true
//root-v パス上で f(x)=true となる最も浅い頂点を返す
//Yandex Cup 2023 Semifinal F (TLE...)
template<class F>
int find_highest(int v,F f)const{
while(1){
int h=head[v];
int p=par[h];
if(p!=-1&&f(p)){
v=p;
}else{
int l=-1,r=dep[v]-dep[h];
while(r-l>1){
const int mid=(l+r)/2;
if(f(ni[in[h]+mid]))r=mid;
else l=mid;
}
return ni[in[h]+r];
}
}
assert(false);
}
};
//suffix automaton
//extend(a,c): ノード a から c の遷移を生やし,遷移先のノードを返す
//文字列集合に対するオートマトンも構築できる
//一般の trie が与えられたら計算量が爆発炎上する
//yosupo number of substrings
//USACO 2017 Dec Platinum 1
template<class C>
struct suffixautomaton{
struct N{
//len:ノードに対応する文字列の最長の長さ
//suf:suffix link
//org:clone元のノード
int len,suf,org;
map<C,int> to;
};
vc<N> x;
suffixautomaton():x{N{0,-1,-1,{}}}{}
int add(int a,C c){
assert(x[a].to.count(c));
int b=x[a].to[c];
if(x[a].len+1==x[b].len)
return b;
else{
int w=x.size();
x.pb(x[b]);
x[w].len=x[a].len+1;
x[w].org=b;
while(a!=-1&&x[a].to[c]==b){
x[a].to[c]=w;
a=x[a].suf;
}
return x[b].suf=w;
}
}
int extend(int a,C c){
if(x[a].to.count(c))return add(a,c);
int cur=x.size();
x.pb(N{x[a].len+1,0,-1,{}});
while(a!=-1&&!x[a].to.count(c)){
x[a].to[c]=cur;
a=x[a].suf;
}
if(a!=-1){
int z=add(a,c);
x[cur].suf=z;
}
return cur;
}
vi toposort(){
int n=x.size();
vi c(n);
rep(i,n)for(auto kv:x[i].to)c[kv.b]++;
vi res(n);
int b=0,e=0;
rep(i,n)if(c[i]==0)res[e++]=i;
while(e<n){
int i=res[b++];
for(auto kv:x[i].to)if(--c[kv.b]==0)res[e++]=kv.b;
}
return res;
}
//Codechef 2021 August Lunchtime Longest Spanning Substrings
//suf によってできる木の葉から順に削って行ったときの順序を返す
//DP などに使えると言われている
vi treeindex(){
int n=x.size();
vi c(n);
rng(i,1,n)c[x[i].suf]++;
vi res;
rep(i,n)if(c[i]==0)res.pb(i);
rep(i,n-1){
int v=res[i];
if(--c[x[v].suf]==0)res.pb(x[v].suf);
}
return res;
}
int size()const{return si(x);}
N& operator[](int i){
return x[i];
}
void show(){
int n=si(x);
vc<string> buf(n);
rep(i,n){
for(auto [c,to]:x[i].to){
string tmp=buf[i]+c;
if(si(buf[to])<si(tmp))
buf[to]=tmp;
}
cerr<<i<<" "<<buf[i]<<endl;
}
}
};
//CF530F
struct ste{
int to,l,r;
operator int()const{return to;}
};
ostream&operator<<(ostream&os,const ste&a){
return os<<"ste{"<<a.to<<","<<a.l<<" "<<a.r<<"}";
}
//0 が root
//idx[i]: s[i:n) に対応するノードの index
//辺に対応する [l,r) は多分 l 最小だが未検証
template<class t>
tuple<vvc<ste>,vi,vi> stree(t a){
int n=si(a);
vi idx(n+1);
suffixautomaton<int> sa;
per(i,n)idx[i]=sa.extend(idx[i+1],a[i]);
int s=si(sa.x);
vi l(s,inf);
vi ord=sa.treeindex();
rep(i,n+1)l[idx[i]]=i;
vvc<ste> g(s);
for(auto i:ord)if(i>0){
int j=sa[i].suf;
chmin(l[j],l[i]);
g[j].pb({i,l[i]+sa[j].len,l[i]+sa[i].len});
}
//ノードの子を辞書順に並べる,skip 可
for(auto&es:g)sort(all(es),[&](ste x,ste y){
return a[x.l]<a[y.l];
});
vi len(s);
rep(i,s)len[i]=sa[i].len;
return mt(move(g),move(idx),move(len));
}
bool dbg=false;
struct N{
vc<pi> lr;
void add(int l,int r){
lr.eb(l,r);
}
segtree<MaxNode> seg;
void init(){
assert(is_sorted(all(lr)));
vi rs(si(lr));
rep(i,si(lr))rs[i]=lr[i].b;
seg.load(rs);
}
int query(int r,int can){
int pos=lwb(lr,pi(r,-1));
pos=seg.min_left(pos,&MaxNode::ok,r).a;
pos--;
if(pos==-1)return -inf;
int res=lr[pos].a;
if(res<r-can)return -inf;
return res;
}
};
void slv(){
string s;cin>>s;
int n=si(s);
auto [t,idx,len]=stree(s);
HLD<ste> hld(t,0);
vc<N> buf(si(t));
rep(i,n){
int v=idx[i],prelen=n-i;
while(v!=-1){
int h=hld.head[v];
int p=hld.par[h];
int curlen=p==-1?0:len[p];
buf[h].add(i+curlen,i+prelen);
prelen=curlen;
v=p;
}
}
rep(i,si(t))if(hld.head[i]==i)buf[i].init();
auto minlen=[&](int l,int r){
assert(l<=r);
int pos=-inf;
int v=idx[r],prelen=n-r;
while(v!=-1){
int h=hld.head[v];
int p=hld.par[h];
int curlen=p==-1?0:len[p];
chmax(pos,buf[h].query(l,prelen-curlen)-curlen);
prelen=curlen;
v=p;
}
if(pos<0)return -1;
return l-pos;
};
vvc<int> l_list(n+1);
rep(i,n+1){
int w=minlen(i,i);
if(w!=-1){
l_list[i+w].pb(i);
}
}
vi lim=vid(n+1);
ll ans=0,cur=0;
rng(r,1,n+1){
soin(l_list[r]);
for(auto l:l_list[r]){
int nx=lim[l]-(r-l);
nx=lim[nx];
cur+=lim[l]-nx;
lim[l]=nx;
int w=minlen(nx,l);
if(w!=-1){
l_list[l+w].pb(l);
}
}
ans+=cur;
}
print(ans);
}
signed main(){
cin.tie(0);
ios::sync_with_stdio(0);
cout<<fixed<<setprecision(20);
if(dbg){
while(1)slv();
}else{
int t;cin>>t;rep(_,t)
slv();
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3580kb
input:
8 aa ab ababa abaaba abacaba abaaababaab aababcabcbc abcdabcabaabcd
output:
1 0 6 7 0 74 51 20
result:
ok 8 numbers
Test #2:
score: 0
Accepted
time: 98ms
memory: 3572kb
input:
100000 ff ki wb vc bb cq tt gl xb tt ll it bb yy dd yg tt vq gg ua ff nn aa yq ee ae sj yy cd qk vk ts tt cm rr yk sh fv vm rr tl vv bb rl jx pv tx ib dp oo lx jo bb dl sj sn db kk oo rk yy gz ff ha ja ax hn ww ms yy kf zz ss ii km uv mn si ng hh yq lq bq ed bb bw jj pp ss xg ff gm ee cc fn vv rc nn...
output:
1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 ...
result:
ok 100000 numbers
Test #3:
score: 0
Accepted
time: 84ms
memory: 3544kb
input:
40000 nbbnn tttuu rfeer omhom qqcmq yyiyi tlttt jhjtj ixiyx bnnon iwpiw uzluz ffqfj dyddl szkss dauud dddiy gggtt ebbee uboob nnnnv rrjrj cjccj xnnyy mwmjw wyyyq vvuvp vyzyv sssss vvsvs rhxxr pkkpk xsxss ngncn wzwjz khkth jjjjj vvvbb unnxn aqlqq mmgmg iiiji lyllv luuuu itizt fsffs xggii jqqtj mummd ...
output:
4 11 2 0 4 7 4 0 0 3 0 0 4 2 1 2 10 11 4 2 16 7 4 4 0 7 4 0 20 7 2 3 5 0 0 0 20 11 3 1 7 10 2 10 0 4 4 3 2 3 4 6 1 4 10 3 6 10 10 16 7 7 0 10 5 0 2 16 0 6 1 0 1 2 5 2 5 6 20 10 0 8 10 3 16 7 0 8 4 3 0 1 7 0 2 4 4 5 3 7 2 4 16 4 1 8 10 7 4 3 4 4 6 2 2 4 6 2 4 5 4 3 10 5 0 4 16 2 3 0 3 4 1 1 4 4 11 2 ...
result:
ok 40000 numbers
Test #4:
score: 0
Accepted
time: 109ms
memory: 3808kb
input:
20000 iijjijiijj fxffxfffxx kkiiiiiiii oppopopppo iiooiioooi gggxxxxggg oxxoxxxoox puuuppupuu ppssspspps eefffeefff xxtxxxttxt yyppypyppp kkwwkkwwkk bvvvbvbbbv attataaaat boooobbobo hhhhfhhhff nnhhhnhhhh cdccccdccd axxxaxaxxa qqnnnnnqnq eeexxeeeex ppkkkkkkkp uusussusss iwiwiiwiii gglgllgggg wwwrrrwr...
output:
40 58 93 52 52 57 56 34 44 46 52 46 57 47 41 47 87 48 56 52 65 47 86 56 61 50 51 34 58 41 52 47 60 92 61 56 64 55 65 48 56 77 80 62 55 57 41 58 44 93 63 49 54 59 50 55 111 58 52 52 39 35 63 50 111 84 140 75 78 40 99 56 49 40 68 45 87 54 47 59 52 59 50 86 82 54 48 59 33 121 84 44 33 40 62 55 46 121 6...
result:
ok 20000 numbers
Test #5:
score: 0
Accepted
time: 151ms
memory: 3628kb
input:
10000 jlljjjlllljjjjljllll uooooouuouoouoooouuo utttutuuttuuuutttutu xccxxxccxxccccxcxxxc sjjsjjsjjssjjsssjjjs fgffffgfgggfgfgfffgf ddaaadaadadddadadaaa tbbbbttttttbtttbtbtt eeeeeekkkekeeeekeeke dddddmdmmmmdddmmddmm yykkkkykkykykkkkyykk ededeedddededeedddee kktttkktktkktkkkttkk fcfcfcffffcffcccccfc ...
output:
339 332 348 341 662 367 363 432 395 371 452 460 353 472 416 420 464 365 589 476 516 407 446 376 501 364 354 424 366 438 330 590 553 491 662 317 467 374 422 406 492 484 405 328 396 654 300 410 447 404 389 487 534 688 489 370 396 474 396 467 364 424 380 236 480 506 506 339 297 316 457 626 338 349 351 ...
result:
ok 10000 numbers
Test #6:
score: 0
Accepted
time: 179ms
memory: 3912kb
input:
4000 urrrrrrrrururrruruuuuuuuuruurruuruuuurrruurruurruu hthtthttthhhtttthhhhthhhhthhhttthtthhtthhtttttthhh ttssssssttsststttsttttssstsssstsstssttssststttstst iiniiiiiniinnniiniiiiniiiinnniiinniiininniinnnnnni dddpdpddpdpdppppdpdppdpdpddppppddddpdpdddppppdppdp mmmsmmmmsmmmmmmsmmmmsmmmmsssmmssmssmsmsm...
output:
5599 5287 4294 4818 5746 7893 3623 3453 5390 5812 5608 5541 6069 5655 3743 3847 4866 5059 3876 3925 5018 4379 5016 5747 5333 5271 3890 5894 5141 3773 4196 4880 5111 5510 4334 3825 6188 5960 4893 5359 4720 4167 4042 4051 5011 6457 3807 3837 4612 4859 5044 6861 4330 5967 5001 4857 4340 3957 4152 4230 ...
result:
ok 4000 numbers
Test #7:
score: 0
Accepted
time: 197ms
memory: 3904kb
input:
2000 ffffccfcfcfcfccffcccfcccfcfccfcccccfcfcccfccfcccccffffcccfcccffffffcffffccccffffffccffffcccfcccfcfff enneeenneneennnnneeeeeenenneeennnnneneneneenneenneennnnnnnnenennennnneneneneeenennnneennnenneennnnne mzmzmmzzmzzmzzmmzmmmzzmmmzzzzmmmzmmzzmzzmmmzzmzmzmmzzmmmmzmmmmmmzzmmmzmmmmzmmzmzmmzzmzmmmmmzm...
output:
32329 22810 31196 27570 28177 29004 24676 27293 26336 28196 28972 25095 34989 26711 26498 29643 24727 22723 31605 30180 43766 27097 25766 26819 28516 28122 34935 27399 33153 32281 26033 24708 41701 21704 24011 27481 26913 23270 31778 27676 25970 38135 25776 23316 44300 29424 24305 23476 29598 24423 ...
result:
ok 2000 numbers
Test #8:
score: 0
Accepted
time: 215ms
memory: 3792kb
input:
1000 udduuddduududddudduuduuuduuududdduuduuduudududdduuddddduuuuddduuuuudduddduuddddududduuduuuuuduuduudduuuuuuuddduuduuduuuudududduuuuududuudduduuduuduududddudududdududuududuudududdduddduuuuuuuuuuuddduduu kykykkykyykkykkkkkkyykkyyyyyykyyykkkyykkyykyyyykkykykkkykkykkkyyykyyyyykkkyyykykykkkkyyykkyyyy...
output:
153694 145776 132786 133300 133959 177645 148786 132135 169466 159430 133110 171068 168822 120233 160090 125272 130139 138522 163688 161504 146208 170689 149990 147133 129161 146576 129200 138709 133553 154659 136204 167106 167771 151156 129986 137285 131065 131582 159289 158241 141081 128564 167348...
result:
ok 1000 numbers
Test #9:
score: 0
Accepted
time: 253ms
memory: 4544kb
input:
200 zzzzzzzzzzzzzzzazzzazzzzzzzaazzaaaazaazzaazzazaazazazazzzazazaazzazzaazaaaazaaazzzzzazzzazzaaazzazzazazaazzzazaaaaaazzzaazzzazaazzzzzaaaazazazazzzzaaaaazaazzzzazzzazazaaazazzzaazaazazazzzzazaazaazaaaazzzzzazzazzzazzzzzzazzaazzzazzzzazzzzaaazzzaaazzzzzazzaazzzzazaazzaaaaazzazazzaaaaazzzzzaaazzazz...
output:
6229118 5438629 6162119 5350067 5263770 5443998 6419968 6592325 5876576 5249432 6397577 5947645 5851620 6059174 6048260 5774316 6323371 6103930 5794311 5297842 5559753 6109729 5724850 5095495 5263069 5635785 5916607 5959557 5261499 5446440 5526488 5504207 7229030 5767214 5191558 5475249 5537449 6169...
result:
ok 200 numbers
Test #10:
score: 0
Accepted
time: 361ms
memory: 11128kb
input:
20 nnnllllnlnnllllllllllllnnnnllnnlllnnnnnnnlnlnnlnllnnlnnnnnnnnnllllnlllnnnlnllnnnlnnllnnlnnllnnnllnlnllnllllnnnlllnllllnlnnllnllllnnlllnnnlllnlnnnnlllnnnlnlnnlnllnnlnllnlllllllnnnnnnnnlnnlllnlnnnllnlllllnlnnllnllllnnnnnnnnnlnnnnnnnnlnlnnnllllllnllnlllnnnlnllnllnnllllllllllnnllnllllnlllnlllnlnnnlll...
output:
894196857 938803119 931699133 881434935 917400222 988704236 829814492 910180484 875107867 927874072 861165839 857715013 907953346 879864017 925887954 884818843 920746630 936583374 887419288 927606368
result:
ok 20 numbers
Test #11:
score: 0
Accepted
time: 468ms
memory: 35464kb
input:
5 omomomommomommommoooommmommmoommmomommmoomoomoomomomoooommmmmmoomomomoommoooommommmooommomoomomommmmmmomooomoommomoommomoooooomoomomooommmommmmooooooomoooommmmomooomoommmmmomoooomommomomomommmomommmommoooomooommomooomoomoommmmmmmoomoommoomommommmmommmmmmmmmoooomomoooomoommmmoomooomomooommmmmoommom...
output:
17174226584 17605268588 18296766446 17539695533 18766633585
result:
ok 5 number(s): "17174226584 17605268588 18296766446 17539695533 18766633585"
Test #12:
score: 0
Accepted
time: 584ms
memory: 67188kb
input:
2 ddvddvvvvvddddvddddddddddddvvdvvvvvvvddvddddddddvvvvdvvddvvdvvvdvdddvdddvvvvdvvvvdvdvdvddvvvddvdvdddvdddvdvvdvvvvdvdvvvvvvdvdvvdddvdddvvvdddvvddvvvdvdddvdddvvdvvddvddvdvdvddvvvvvvdvdddvvddvdddvdddvdvvvvdvvvvdvvddvvvddvvdddvvddvdddvdvdvddvvvddvddvvddvddvvddddvdddvddvvvdvdvvvvvdvvvvddddvdddvddvdvvdd...
output:
132896961339 129565821251
result:
ok 2 number(s): "132896961339 129565821251"
Test #13:
score: 0
Accepted
time: 291ms
memory: 66152kb
input:
1 aaaattttattataatattaatattatttatatataaaaaaaattttttaaaaataatttattaaaaaatttttataataataaattttatattatattaaaaatttaaatatatttataaattaatatatataaatataaataaattttattttattaaaatttataaaaatattaattataaaattattaaaatttataaaatataaataatatataaattttaaaaatattaattattattaaaaaaaataatttaataaatattataattaattattaataataatattatatt...
output:
119827510026
result:
ok 1 number(s): "119827510026"
Test #14:
score: 0
Accepted
time: 697ms
memory: 131000kb
input:
1 wzwzzzwzzzwzwwzzwzzzwzzwzzzzwwzzzzzzwzzwzwzzwzwwzwzzwzzwwwwwwwzwzwzzzwzzzwwwwwwzwwwzzzwwwzzwwzwzwzzwzwzwwwwzwzwzzzzwwzwzzzwwwzwwzzwwzzzwzzzzzwwwzzzzwwwwwwzwwzzzwzwzzzwwwzwzzzzzwzwzzwwwwzwwzwzzzzwwwwwwwzwwzzwzwzwwwzwwwwwwzzzwwzzwwzzzzzzzwzzzwwwzwwwzzwwzzzzwzzzwzzwzwzwwwwzzwwwzwzwzwzzwzzzzzwwwwwzwww...
output:
554193679678
result:
ok 1 number(s): "554193679678"
Test #15:
score: 0
Accepted
time: 692ms
memory: 131040kb
input:
1 eeeewweeewwweeeewewweweeweeeewweweeewweeewweewwwewwewwwewwewwwewewewwweewwwwweeeweweeeeeeewweewweewwwewwweweeeweweweeweeewwwwewweweewwewwwweeweeeewwwwewewwwewwwwewwewwewewwwwwweeweewweewweeewwwwewewewewwwwwweweeewwwwwewwwwweeewweeweewewwweewweeeewwewewewewweeeewwweweewewwwwewwwwwwwewwweeeeeewewewe...
output:
529663865648
result:
ok 1 number(s): "529663865648"
Test #16:
score: 0
Accepted
time: 663ms
memory: 131180kb
input:
1 vvvvvaaavavaaavaavavvavaaaavavavaaaaavavvvvvvavvvvvaaaavvvvavaaavvvaavaaavavaaaavvvvvvavavaavvaavvvaavvvaavvvaaaaaavavavavvaavavvavavvvvvaavvavavvvavavvvvavavvaaavvvvavvvvvvaavvavvvaavvavaavvvvavvaaaaavvvaavvaaaaavaavvavvvaavavaaaavaavvaavvavvavvavvvvvaavvvavvaaavaavavaaavavavvaavaavavaavavvavvvaa...
output:
556151200408
result:
ok 1 number(s): "556151200408"
Test #17:
score: 0
Accepted
time: 696ms
memory: 130872kb
input:
1 lslsslslssslllllslssllsssllllslllsllssllslllsslslslssllssslsssllsllslllllsssssllslslssslllslssslssslsslsllssllssslllllslslslsslssssssslsllslssslsslslllsssssslsslslslllslsssllsssslsllsssslssllslsllsllsssllslslllsslsllslsssslsssslslslsssllsslllsssssslsssllssllslllsllssslsssslllslslllllsslllsllsllsll...
output:
528149019431
result:
ok 1 number(s): "528149019431"
Test #18:
score: 0
Accepted
time: 545ms
memory: 117436kb
input:
1 lllrllalaalllalaaraarlaralaaaalaarrrrralllllaarllllaarrlllalalrrlaarllraaaalrarrarrrlallrlaralraarlrrraallralrrlaraallralarrallarrrrarlllrrrarrlllllaaarlaararrlalalraallrlararalallalrrlrlrarlrraararrarllaaaaallalrlaaarllraaaalraalaarrrralllrlalalralalrrllrrallarllalraaalralrrlalrlarrralrlrrraraaal...
output:
22333600841
result:
ok 1 number(s): "22333600841"
Test #19:
score: 0
Accepted
time: 475ms
memory: 108084kb
input:
1 iixvjvjjijijiijvvxjvxvjjjjjiixijvvxxvjxvvvivxixjixiivivijjiixvxvixxvvjjxiijvixjivjvxixxivxvxxjiixjxivjvivivjxxxjxiiviijjxxvxiijjvxxjjvjvjxixivxxjijjiiivjvvvjiijijxvvivivxixiijjvxxvxxvjjijjjjvvxjxxvjxixvvjijivjjjviixviivijvjjjvjjxvjjxiivxxxjxxjvxxvjxijjxxvxjjvvvvjivxjvjvxxiivvvxiivijxxjxjxjxvivvvxv...
output:
11581008357
result:
ok 1 number(s): "11581008357"
Test #20:
score: 0
Accepted
time: 64ms
memory: 71648kb
input:
1 llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll...
output:
1333333333300000
result:
ok 1 number(s): "1333333333300000"
Test #21:
score: 0
Accepted
time: 71ms
memory: 3604kb
input:
10000 voovvoovvoovvoovvoov iiifiiifiiifiiifiiif cccccccccccccccccccc ffaaffaaffaaffaaffaa vvvvvvvvvvvvvvvvvvvv pppppppppppppppppppp eeeeeeeeeeeeeeeeeeee rttrrttrrttrrttrrttr ifffifffifffifffifff auaaauaaauaaauaaauaa ygygygygygygygygygyg sooosooosooosooosooo qyqyqyqyqyqyqyqyqyqy bnbbbnbbbnbbbnbbbnbb ...
output:
730 867 1330 772 1330 1330 1330 730 820 765 1050 820 1050 765 1330 772 772 795 730 765 730 1050 1330 820 1330 730 1330 820 765 795 730 765 765 795 772 765 730 772 867 1330 730 772 730 765 1330 730 1050 867 730 765 867 730 795 765 765 730 1050 820 1330 765 1330 730 795 1330 730 765 820 765 1050 765 1...
result:
ok 10000 numbers
Test #22:
score: 0
Accepted
time: 119ms
memory: 3968kb
input:
1000 dwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwddwwwddwdwwdwwd nnununuuunnuuunnununuuunnuuunnununuuunnuuunnununuuunnuuunnununuuunnuuunnununuuunnuuunnununuuun...
output:
1081353 1118393 1088918 1090191 1116529 1064770 1075776 1129102 1074591 1115280 1162865 1087780 1074274 1052530 1096934 1118610 1088713 1115380 1131098 1078760 1083054 1105100 1079841 1078832 1097238 1117021 1076154 1121333 1084532 1166455 1089413 1138232 1124277 1088094 1074886 1136986 1105960 1128...
result:
ok 1000 numbers
Test #23:
score: 0
Accepted
time: 219ms
memory: 12388kb
input:
10 iwwiwiwiwiwwiwwiwiwiiwwwwwiwiiiwwiiwwwiwwwwiiwwwiiiwwwwwiwwwwiwiiwiiwwiiwwiiwwwwwwwwiwwiiiwwiiwiwiwwiiiiiwiwiwwiiwwwwwwiwiwiwwiiiiiwwwiwwiiiwiwwiwiwiwiwwiwwiwiwiiwwwwwiwiiiwwiiwwwiwwwwiiwwwiiiwwwwwiwwwwiwiiwiiwwiiwwiiwwwwwwwwiwwiiiwwiiwiwiwwiiiiiwiwiwwiiwwwwwwiwiwiwwiiiiiwwwiwwiiiwiwwiwiwiwiwwiww...
output:
1295376087708 1295178117419 1295587801659 1295313428121 1296115944696 1295231802325 1295170936996 1295379554897 1295313977212 1295364009371
result:
ok 10 numbers
Test #24:
score: 0
Accepted
time: 307ms
memory: 77144kb
input:
1 ngngggngggngnnggngggnggnggggnnggggggnggngnggngnngnggnggnnnnnnngngngggngggnnnnnngnnngggnnnggnngngnggngngnnnngngnggggnngngggnnngnnggnngggngggggnnnggggnnnnnngnngggngngggnnngngggggngnggnnnngnngnggggnnnnnnngnnggngngnnngnnnnnngggnnggnngggggggngggnnngnnnggnnggggngggnggngngnnnnggnnngngngnggngggggnnnnngnnn...
output:
1320450315151483
result:
ok 1 number(s): "1320450315151483"
Test #25:
score: 0
Accepted
time: 245ms
memory: 74664kb
input:
1 vvvfvvrvrrvvvrvrrfrrfvrfrvrrrrvrrfffffrvvvvvrrfvvvvrrffvvvrvrvffvrrfvvfrrrrvfrffrfffvrvvfvrfrvfrrfvfffrrvvfrvffvrfrrvvfrvrffrvvrffffrfvvvfffrffvvvvvrrrfvrrfrffvrvrvfrrvvfvrfrfrvrvvrvffvfvfrfvffrrfrffrfvvrrrrrvvrvfvrrrfvvfrrrrvfrrvrrffffrvvvfvrvrvfrvrvffvvffrvvrfvvrvfrrrvfrvffvrvfvrfffrvfvfffrfrrrv...
output:
1320037988306839
result:
ok 1 number(s): "1320037988306839"
Test #26:
score: 0
Accepted
time: 158ms
memory: 69784kb
input:
1 vqducvmoheimtxbtezzhinvgpltrtlgdacurdwpddmybmtvlyzxedvvximthlnpphlfnpjfrwofqwcsiyllrpeotqjpjpwcuohpkakdwedioksrzmzzyalfmvsitadyvltamltccnakjcnchmcycwmllrxnpsrpfafaogkbjpnxpufizpdvyosypyfyfddhebgunajssmtzzpenvsitafxvjonoyaaskglenhvfamuzqxtntcxcqoupkmutslthtdowxaqzvmpgiqsuvuyditcbaxhigdrfhcokapnjqpp...
output:
1319998788614514
result:
ok 1 number(s): "1319998788614514"
Test #27:
score: 0
Accepted
time: 432ms
memory: 117424kb
input:
1 jjbjjbpjjbjjbpejjbjjbpjjbjjbpesjjbjjbpjjbjjbpejjbjjbpjjbjjbpescjjbjjbpjjbjjbpejjbjjbpjjbjjbpesjjbjjbpjjbjjbpejjbjjbpjjbjjbpesczjjbjjbpjjbjjbpejjbjjbpjjbjjbpesjjbjjbpjjbjjbpejjbjjbpjjbjjbpescjjbjjbpjjbjjbpejjbjjbpjjbjjbpesjjbjjbpjjbjjbpejjbjjbpjjbjjbpescznjjbjjbpjjbjjbpejjbjjbpjjbjjbpesjjbjjbpjjbjj...
output:
405176488446365
result:
ok 1 number(s): "405176488446365"
Test #28:
score: 0
Accepted
time: 272ms
memory: 21868kb
input:
10 ccjccjuccjccjutccjccjuccjccjutvccjccjuccjccjutccjccjuccjccjutvbccjccjuccjccjutccjccjuccjccjutvccjccjuccjccjutccjccjuccjccjutvbyccjccjuccjccjutccjccjuccjccjutvccjccjuccjccjutccjccjuccjccjutvbccjccjuccjccjutccjccjuccjccjutvccjccjuccjccjutccjccjuccjccjutvbypccjccjuccjccjutccjccjuccjccjutvccjccjuccjc...
output:
427679431877 427679431877 427679431877 427679431877 427679431877 427679431877 427679431877 427679431877 427679431877 427679431877
result:
ok 10 numbers
Test #29:
score: 0
Accepted
time: 170ms
memory: 4712kb
input:
100 yyeyyeayyeyyeasyyeyyeayyeyyeasmyyeyyeayyeyyeasyyeyyeayyeyyeasmgyyeyyeayyeyyeasyyeyyeayyeyyeasmyyeyyeayyeyyeasyyeyyeayyeyyeasmghyyeyyeayyeyyeasyyeyyeayyeyyeasmyyeyyeayyeyyeasyyeyyeayyeyyeasmgyyeyyeayyeyyeasyyeyyeayyeyyeasmyyeyyeayyeyyeasyyeyyeayyeyyeasmghbyyeyyeayyeyyeasyyeyyeayyeyyeasmyyeyyeayye...
output:
337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 337450031 ...
result:
ok 100 numbers
Test #30:
score: 0
Accepted
time: 425ms
memory: 117284kb
input:
1 qqeqqelqqeqqelrqqeqqelqqeqqelrvqqeqqelqqeqqelrqqeqqelqqeqqelrvbqqeqqelqqeqqelrqqeqqelqqeqqelrvqqeqqelqqeqqelrqqeqqelqqeqqelrvbmqqeqqelqqeqqelrqqeqqelqqeqqelrvqqeqqelqqeqqelrqqeqqelqqeqqelrvbqqeqqelqqeqqelrqqeqqelqqeqqelrvqqeqqelqqeqqelrqqeqqelqqeqqelrvbmxqqeqqelqqeqqelrqqeqqelqqeqqelrvqqeqqelqqeqq...
output:
405176488446365
result:
ok 1 number(s): "405176488446365"
Test #31:
score: 0
Accepted
time: 449ms
memory: 117300kb
input:
1 zznzznwzznzznwbzznzznwzznzznwbrzznzznwzznzznwbzznzznwzznzznwbrxzznzznwzznzznwbzznzznwzznzznwbrzznzznwzznzznwbzznzznwzznzznwbrxezznzznwzznzznwbzznzznwzznzznwbrzznzznwzznzznwbzznzznwzznzznwbrxzznzznwzznzznwbzznzznwzznzznwbrzznzznwzznzznwbzznzznwzznzznwbrxeizznzznwzznzznwbzznzznwzznzznwbrzznzznwzznzz...
output:
405176488446365
result:
ok 1 number(s): "405176488446365"
Test #32:
score: 0
Accepted
time: 470ms
memory: 104312kb
input:
1 aaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpaaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpbaaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpaaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpbraaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpaaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpbaaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpaaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpbrzaaoaaoxaaoaaoxwaaoaaoxaaoaaoxwpaaoaaoxaaoaa...
output:
497781730884919
result:
ok 1 number(s): "497781730884919"
Test #33:
score: 0
Accepted
time: 441ms
memory: 104364kb
input:
1 xxexxecxxexxeckxxexxecxxexxeckfxxexxecxxexxeckxxexxecxxexxeckfpxxexxecxxexxeckxxexxecxxexxeckfxxexxecxxexxeckxxexxecxxexxeckfpdxxexxecxxexxeckxxexxecxxexxeckfxxexxecxxexxeckxxexxecxxexxeckfpxxexxecxxexxeckxxexxecxxexxeckfxxexxecxxexxeckxxexxecxxexxeckfpdqxxexxecxxexxeckxxexxecxxexxeckfxxexxecxxexx...
output:
497781730884919
result:
ok 1 number(s): "497781730884919"
Test #34:
score: 0
Accepted
time: 421ms
memory: 97456kb
input:
1 iiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmeiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmehiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmeiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmehaiiwiiwfiiwiiwfbiiwiiwfiiwiiwfbmiiwiiwfiiwii...
output:
807861657180251
result:
ok 1 number(s): "807861657180251"
Test #35:
score: 0
Accepted
time: 315ms
memory: 82644kb
input:
1 oopoopdoopoopdzoopoopdoopoopdzgoopoopdoopoopdzoopoopdoopoopdzgvoopoopdoopoopdzoopoopdoopoopdzgoopoopdoopoopdzoopoopdoopoopdzgvroopoopdoopoopdzoopoopdoopoopdzgoopoopdoopoopdzoopoopdoopoopdzgvoopoopdoopoopdzoopoopdoopoopdzgoopoopdoopoopdzoopoopdoopoopdzgvrwoopoopdoopoopdzoopoopdoopoopdzgoopoopdoopoo...
output:
1292889259936437
result:
ok 1 number(s): "1292889259936437"
Test #36:
score: 0
Accepted
time: 242ms
memory: 75336kb
input:
1 iiaiiajiiaiiajeiiaiiajiiaiiajeciiaiiajiiaiiajeiiaiiajiiaiiajecliiaiiajiiaiiajeiiaiiajiiaiiajeciiaiiajiiaiiajeiiaiiajiiaiiajeclviiaiiajiiaiiajeiiaiiajiiaiiajeciiaiiajiiaiiajeiiaiiajiiaiiajecliiaiiajiiaiiajeiiaiiajiiaiiajeciiaiiajiiaiiajeiiaiiajiiaiiajeclvpiiaiiajiiaiiajeiiaiiajiiaiiajeciiaiiajiiaii...
output:
1328201924096597
result:
ok 1 number(s): "1328201924096597"
Test #37:
score: 0
Accepted
time: 157ms
memory: 68528kb
input:
1 yygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygyygvyygyygvouyygyygvyygyygvoyygy...
output:
1332701853158829
result:
ok 1 number(s): "1332701853158829"
Test #38:
score: 0
Accepted
time: 111ms
memory: 64376kb
input:
1 hhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfhhfkhhfh...
output:
1333199053599917
result:
ok 1 number(s): "1333199053599917"
Test #39:
score: 0
Accepted
time: 437ms
memory: 124312kb
input:
1 cxcxccxcxcxccxcccxccccxcxccxcccxcccxcxccxccccxcxccxcccxcccxcxccxcccxccccxcxccxccccxcxccxcxcxccxcccxccccxcxccxcccxcccxcxccxccccxcxccxcccxcccxcxccxcccxccccxcxccxcccxcccxcxccxccccxcxccxcccxccccxcxccxcccxcccxcxccxccccxcxccxcccxccccxcxccxcccxcccxcxccxcxccxcccxcccxcxccxcccxcxccxcccxcccxcxccxccccxcxccxcc...
output:
532325876704019
result:
ok 1 number(s): "532325876704019"
Test #40:
score: 0
Accepted
time: 437ms
memory: 123264kb
input:
1 aqaqaqaqaaqaaqaqaqaqaaqaqaaqaqaaaaqaaqaqaaqaqaqaqaaqaqaaqaqaaaaqaaqaqaaqaqaaqaqaaaaqaqaaaqaqaaqaqaaaaaqaqaqaqaaqaaqaqaqaqaaqaqaqaqaqaqaaqaaqaqaqaqaaqaqaaqaqaaaaqaaqaqaqaqaqaqaaqaaqaqaqaqaaqaqaaqaqaaaaqaaqaqaaqaqaqaqaaqaqaaqaqaaaaqaaqaqaaqaqaaqaqaaaaqaqaaaqaqaaqaqaaaaaqaqaqaqaaqaaqaqaqaqaaqaqaqaqaq...
output:
489819092586073
result:
ok 1 number(s): "489819092586073"
Test #41:
score: 0
Accepted
time: 375ms
memory: 122012kb
input:
1 zzzzjzjjzzzzjzjjzzzzzzzjzjzzzzjzjjzzzzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzjjzzzzzzzzjzjjzzzzjzjjzzzzzzzjzjzzzzjzjjzzzzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzzzzzjzjjzzzzzzzjzjjzzzzjzjjzzzzzzzjzjzzzzjzjjzzzzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzjjzzzzjzjjzzzzzzzzjzjjzzzzjzjjzzzzzzzjzjzzzzjzjj...
output:
390591892081557
result:
ok 1 number(s): "390591892081557"
Test #42:
score: 0
Accepted
time: 422ms
memory: 122336kb
input:
1 ddgddgdgdgdgdggdddggdggggddgddggggdgddgdggddggdggddgddgdgdgdgdggdddggdggggddgddggggdgddgdggddggdddgddgdgdgdgdggdddggdggggddgddggggdgddgdggddggdggddgddgdgdgdgdggdddggdggggddgddggggdgddgdggddggdggdgdgdggdddddgdddgggdggddggdgdddgdgddggddddgddgdgddggdgdgdggggddddgddgdgdgdgdggdddggdggggddgdddgddddgddgd...
output:
88340030443020
result:
ok 1 number(s): "88340030443020"
Test #43:
score: 0
Accepted
time: 471ms
memory: 125508kb
input:
1 bbbbllblblllbllbllblbbllblbllbblblblbblblllblllblllblbllbbbbbllllblllbbblllbllbbbblblbblbllbbbblbllbbbllbbbbbbbbbbbbbbbbllblblllbllbllblbbllblbllbbbbbbllblblllbllbllblbbllblbllbblblblbblblllblllblllblbllbbbbbllllblllbbblllbllbbbblblbblbllbbbblbllbbbllbbbbbbbbbbbbbbbbllblblllbllbllblbbllblbllbblblb...
output:
21558624570815
result:
ok 1 number(s): "21558624570815"
Test #44:
score: 0
Accepted
time: 550ms
memory: 129452kb
input:
1 smmsmsmssmmssmmmssmssmmsmmmmmmsmmmssmmsssmssmmsmmsmmsssmsmsmmssssmmmmmmsmsmsmsmsmmssssmmmmsmsssmmsssmsmmmsmssmsssmmmsmmmmsssmsmmmmmssssssssmmmssssmmmmmmsssmsmmsmmmmsssmmmmmmmmsmmmsmssmmsmmssmmmssmmssmmsmsmmssmsmsmsmmmssmsmsssmssssmssmssmsmsmsmsmmmmsmmssmsssmsssmssmssmmsmmsssmmsssssmmsmmsmssmsmmmms...
output:
3080126774871
result:
ok 1 number(s): "3080126774871"
Test #45:
score: 0
Accepted
time: 609ms
memory: 119488kb
input:
1 pqpppppqqqqqpqqpppqqqqpqpqqppqqppqqqppqqqqqppqqppqpqppqppqqpppppqppppqqppppqpppqppqpqpqqppppqqpqqppppqpqqpppqqpqpppqqpqqqppqqqpqppqqqqqqqqqpppqqqqqqpqppqppqqpqppqqpqpqpqppppqqqqpqpqqqqqpqqpppqqppqqpqqqqqpqqppqpqqpqqqqqqpppqppqppqqqpqqpqqqqqpqppppqqpqpqqppppqqqqqpqqppppqqqqppqpqqqpqpqqppqqppqqqqpqq...
output:
859785574356
result:
ok 1 number(s): "859785574356"
Test #46:
score: 0
Accepted
time: 478ms
memory: 124280kb
input:
1 sjsjsjssjsjsjsjsjsjsjsssjsjssjssjsjsjsjssjsjsjssjsjsjsjsjssjsjssjsjssjssjsjsjssjssjsjsjssjsjsjsjsjsjssjssjsjsjssjssjsjssjsjsjsjssjsjsjsjssjsjsjsjsssjsjsjssjsjsjsssjsjsssjsjssjssjsjssjssjsjsjssjssjsjsjssjsjsjsjssjsjsjssjsjssjsjssjsjssjsjsjssjssjsjsjssjsjsjsssjsjsjssjssjsjsjssjsjsjssjsjsjsjssjsjsjsj...
output:
535123487680607
result:
ok 1 number(s): "535123487680607"
Test #47:
score: 0
Accepted
time: 484ms
memory: 125016kb
input:
1 vrvrvvrvrvrvrvvvvrvrvrvvrvrvrvrvvvvrvrvrvrvrvrvvvvrvrvrvrvvvrvrvrvvrvrvrvrvvvvrvrvrvrvvvrvrvrvvrvrvrvrvrvvvvrvrvrvrvvvrvrvrvvrvrvrvrvvvvrvrvrvrvvvrvrvrvrvvrvrvrvrvvrvvrvrvrvrvvrvrvrvrvvrvvrvrvrvrvvrvrvrvrvrvvrvrvrvrvrvrvvrvvrvrvrvrvrvrvvrvvrvrvrvrvrvrvvrvvrvrvrvrvrvvrvrvvrvvrvrvrvrvrvvrvrvvrvrvrvr...
output:
532834873916524
result:
ok 1 number(s): "532834873916524"
Test #48:
score: 0
Accepted
time: 429ms
memory: 123924kb
input:
1 xzxzxxxxzxzxxxzxzxxzxzxxzxzxxzxzxxzxzxzxxzxzxxxxzxzxxxzxzxxzxzxxzxzxxzxzxxzxzxxzxzxxxxzxzxxxzxzxxzxzxxzxzxxzxzxxzxzxzxxzxzxxxxzxzxxxzxzxxzxzxxzxzxxzxzxxzxzxzxxzxzxzxxxxzxzxxxzxzxxzxzxxzxzxxzxzxxzxzxzxxzxzxxzxzxxxzxzxxzxzxxzxzxxzxzxxzxzxzxxzxzxxzxzxzxxxzxzxxzxzxxzxzxxzxzxxzxzxzxxzxzxxzxzxxxzxzxxzxz...
output:
543877851845068
result:
ok 1 number(s): "543877851845068"
Test #49:
score: 0
Accepted
time: 345ms
memory: 121608kb
input:
1 duddudududduddudududududududududduddudududduddududududududududududduddududududdudududduddududududududududududduddudududduddududududududududududududdudududududdududududududududduddudududduddududududududududududududdudududdudududduddudududududududududduddudududduddududududududududududduddududududdud...
output:
383753618060522
result:
ok 1 number(s): "383753618060522"
Test #50:
score: 0
Accepted
time: 278ms
memory: 116736kb
input:
1 pupuuupuuujrpupuuupuuupuuujrpupupupupuuupuuujrpupuuupuuupuuujrpupupuuupuuujrpupupuuupuuujrpupuuupuuupuuujrpuppupuuupuuujrpupuuupuuupuuujrpupupuuupuuujrpupupupuuupuuujrpupuuupuuupuuujrpupupuuupuuujrpupupuuupuuujrpupuuupuuupuuujrpuppupuuupuuujrpupuuupuuupuuujrpupupuuupuuujrpupupuuupupuuupuuujrpupuuu...
output:
83495817302527
result:
ok 1 number(s): "83495817302527"
Test #51:
score: 0
Accepted
time: 222ms
memory: 112456kb
input:
1 cgvcgvcgvcgvpfghxjcgvcgvpfghxjezcgvcgvpfghxjcgvcgvpfghxjezthvmijtclnqdcgvpfghxjezthvmijtclnqdcsiabaeklvpotstfhwzucsuoftiuyxwxgwwuycgvcgvpfghxjcgvcgvpfghxjezcgvcgvpfghxjcgvcgvpfghxjezthvmijtclnqdcgvccgvcgvpfghxjcgvcgvpfghxjezcgvcgvpfghxjcgvcgvpfghxjezthvmijtclnqdcgvpfghxjezthvmijtclnqdcsiabaeklvpot...
output:
20342734124692
result:
ok 1 number(s): "20342734124692"
Test #52:
score: 0
Accepted
time: 217ms
memory: 111500kb
input:
1 laiebobdjvjnwoldexhhwwphnpevihgcjtgzjmzdlzdwzuahhiwztjxuozcmffypqtitqoqpwmbhzrdgxoyziqvisaupzmbttggrsqafcsvgwsknanhqzaehnzgnouxtmcgoilopckmsukvzbpffpaiaksguxkcxkypdkuhezpvzgoobqzhlaiebobdjvjnwoldexhhwwphnpevihgcjtgzjmzdlzdwzuahhiwztjxuozcmffypqtitqoqpwmbhzrdgxoyziqvisaupzmbttggrsqafcsvgwsknanhqzae...
output:
2039003270945
result:
ok 1 number(s): "2039003270945"
Test #53:
score: 0
Accepted
time: 232ms
memory: 108260kb
input:
1 vyubllhxsbxevsoihfkmdnvmntrqxeukvcqogklkxqbmkprnovsdkmfzstudxhtfweaocdiiqmndherttmfrngayfgdycjcgclgosajtbcvtkhryihwvrthgcmqnqkkqnzktawxuomaruaytivculcoglecgnazxinyyfjzadqeikhguipxadpnbzvqwupdojnelspwbbunderebfcqjwxmfsgyemmatqgryxyrbjcyyfxhaymmgdpxhiudhdhswtfvmskfqshupmarusazrinmyifneslvealmqllfuvs...
output:
108525645541
result:
ok 1 number(s): "108525645541"
Test #54:
score: 0
Accepted
time: 252ms
memory: 87048kb
input:
1 atwxvutxruyvpnlodfnjzdbihsrjlvgoevkdfiezamcgbhiheecxuppdodeewrngsdtpxahhmmjikwbmvwytjxczvscewuexadslctikvmnumoipbapbhruzbublpfqtbmmqszobriiffznezlmoitosylcrqzmbqjefjjpxnmcoskxwvanhobiyujmiczfwhfcvtboddamyozkshzzxzdxbhyrjjkdmyntqejybofceheasspwsxnflvqmordujwtxezlsfnkeucizhpwwjdfnlijrrchfcffjhnawaal...
output:
15326358668
result:
ok 1 number(s): "15326358668"
Test #55:
score: 0
Accepted
time: 423ms
memory: 123068kb
input:
1 qqjqqqjqqqjqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqqqjqqqjqqqjqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqjqqqjqqjqqqjqqqjqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqqqjqqqjqqqjqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqjqqqjqqqjqqjqqqjqqqjqqqjqqqjqqqjqqqjqqqjqqjqqqjqqqqqjqqqqqjq...
output:
495209269441827
result:
ok 1 number(s): "495209269441827"
Test #56:
score: 0
Accepted
time: 334ms
memory: 120248kb
input:
1 dididdxidididddididdxidididdxiiddiddididididdxidididdxiiddiddididdxiiddididididdxidididdxiiddididdxidididddididdxidididdxiiddiddididididdxidididdxiiddiddididdxiiddididididdxidididdxiiddiddididdxiiddididdxiidiididididididdxidididdxiiddiddididididdxidididddididdxidididdxiiddiddididididdxidididdxiidd...
output:
87336487474432
result:
ok 1 number(s): "87336487474432"
Test #57:
score: 0
Accepted
time: 324ms
memory: 119236kb
input:
1 cwnwnwcwnwnwnwcwnwnwcwnwnwnwnncnwwccwnwnwnwnncwnwnwnwnncncwnwnwcwnwcwnwnwcwnwnwnwcwnwnwcwnwnwnwnncnwwccwnwnwnwnncwnwnwnwnncncwnwnwcwnwnwnwncwnwnwcwnwnwcwnwnwcwnwnwnwnncnwwccwnwnwnwnncwcwnwnwcwnwnwnwcwnwnwcwnwnwnwnncnwwccwnwnwnwnncwnwnwnwnncncwnwnwcwnwnwnwncwnwnwcwnwnwcwnwnwcwnwnwnwnncnwwccwnwnwnwn...
output:
28464613072032
result:
ok 1 number(s): "28464613072032"
Test #58:
score: 0
Accepted
time: 389ms
memory: 123940kb
input:
1 gyggygygyggygyggygyggygyggygyggyggygygggyggygygyggygyggygyggyggyggygygyggygyggygyggygyggygyggyggygygggyggygygyggygyggygyggygyggygyggyggygyggygyggygyggygyggygygyggygyggygyggygyggygyggyggygygggyggygygyggygyggygyggyggygggyggygygyggygyggygyggygyggygyggyggygygggyggygygyggygyggygyggyggyggygygyggygyggygy...
output:
510728187699973
result:
ok 1 number(s): "510728187699973"
Test #59:
score: 0
Accepted
time: 285ms
memory: 117452kb
input:
1 qiqiiqqffjqiqiiqqffqiqiiqqffjqiqiiqqffjqfqiqiqiiqqffjqfqiaaiiiijiaifiqiqqiqiqiiqqqiqiiqqffjqiqiiqqffjqfqiqiqiiqqffjqfqiqiqiiqqffjqiqiiqqffqiqqiqiiqqffjqiqiiqqffqiqiiqqffjqiqiiqqffjqfqiqiqiiqqffjqfqiaaiiiijiaifiqiqqiqiqiiqqqiqiiqqffjqiqiiqqffjqfqiqiqiiqqffjqfqiqiqiiqqffjqiqiiqqffqiqiiqqffjqiqiiqqff...
output:
50871054628589
result:
ok 1 number(s): "50871054628589"
Test #60:
score: 0
Accepted
time: 292ms
memory: 116752kb
input:
1 mmtqllmmtqlltqqqommtqllmmtqlltqqqotmmtqllmmtqlltqqqommtqllmmtqlltqqqotmoomtoltottmtqottotqooollllttmmtqllmmtqlltqqqommtqllmmtqlltqqqotmoomtoltottmtqottotqmmtqllmmtqlltqqqommtqllmmtqlltqqqotmoomtoltottmtqottotqooollllttmmtqllmmtqlltqqqommtqllmmtqlltqqqotmoomtoltottmtqottotqooollllttommtqllmmtqlltqq...
output:
51284405737644
result:
ok 1 number(s): "51284405737644"
Test #61:
score: 0
Accepted
time: 346ms
memory: 115316kb
input:
1 hmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmhmhhmhmhmhhmhmmhmhmhhmhmhmhhmhmmhmhmhmhhmhmhmhhm...
output:
284623096285415
result:
ok 1 number(s): "284623096285415"
Test #62:
score: 0
Accepted
time: 317ms
memory: 118024kb
input:
1 amaamaamaaamaaamaamaamaaamaamaamaamamaammamamaamamaamaamaaamaamaamaaamaaamaamaamaaamaamaamaamamaammamamaamamaamaamaaamaaamaamaamaaamaamaamaamamaammamamaamaamaamaamaamamaamaamaamamaammamamaamaamaaamaamaamaaamaaamaamaamaaamaamaamaamamaammamamaamamaamaamaaamaamaamaaamaaamaamaamaaamaamaamaamamaammamam...
output:
359135170761701
result:
ok 1 number(s): "359135170761701"
Test #63:
score: 0
Accepted
time: 294ms
memory: 113000kb
input:
1 oollolllooloooollloollolllooloooolllooloooollooollolllooloooollloollolllooloooolllooloooollolllooloooollloolooollolllooloooollloollolllooloooolllooloooooollolllooloooollloollolllooloooolllooloooollooollolllooloooollloollolllooloooolllooloooollolllooloooollloolooollolllooloooollloollolllooloooolllo...
output:
255239125866786
result:
ok 1 number(s): "255239125866786"
Test #64:
score: 0
Accepted
time: 315ms
memory: 107544kb
input:
1 itttttittiitittiiiiititttiittiiitittitttttiitttttittiitittiiiiititttiittiiitittitttttittiitittiiiiititttiittiiitittititiiitiiiitttttittiitittiiiiititttiittiiitittitttttittiitittiiiiititttiittiiitittititiiitiiittiiiitittittiitiiiititittttiitittttitittiitttttittiitittiiiiititttiitttttittiitittiiiiit...
output:
76141819635053
result:
ok 1 number(s): "76141819635053"
Test #65:
score: 0
Accepted
time: 378ms
memory: 124532kb
input:
1 vlvllvvlvvvvlvlvlvlllvllvvlvlllvvlvlllvlvvvvvllllvvvlllvvvvvlllvlvvlvvllvvvvlvllvvvllvvvllllvllllvvlvvlllvllvlvvvvlvvvllvlllvlvlvvllvlllvvvlllvlvvlllllvvvvvvlvlllvvllllvvvlvllvvlvvvvlvlvlvlllvllvvlvlllvvlvlllvlvvvvvllllvvvlllvvvvvlllvlvvlvvllvvvvlvllvvvllvvvllllvllllvvlvvlllvllvlvvvvlvvvllvlllvlvl...
output:
68479316171591
result:
ok 1 number(s): "68479316171591"
Test #66:
score: 0
Accepted
time: 407ms
memory: 124796kb
input:
1 wwwwtwtttttwttwtwtwtwttwwttttttwwwtwwwtwtttwtwwtttwtwtwttwttwtwwwwtwttwttwttwtwtwwtttwwwwttwtwwttwwtwwwwwwtwtttttwttwtwtwtwttwwttttttwwwtwwwtwtttwtwwtttwtwtwttwttwtwwwwtwttwttwttwtwtwwtttwwwwttwtwwttwwtwwwwwwwwtttwttttttwwwtttwwtwtwtwwtwwwwtwwtwtwwwwwttwttttwwtwwwtttwtwttwtttwttwtttwwwtwtwwtwwwwtw...
output:
17691884809795
result:
ok 1 number(s): "17691884809795"
Test #67:
score: 0
Accepted
time: 392ms
memory: 107236kb
input:
1 ggrggrgrgrgrgrrgggrrgrrrrggrggrrrrgrggrgrrggrrgrrgrgrgrrgggggrgggrrrgrrggrrgrgggrgrggrrggggrggrgrggrrgrgrgrrrrgggrgrggrrggrgggggrgrrrgrgrgggrgrrrggrrrrggrrgrgrgrgrggggrgrggrggrgrrgrgrrrrgrrrrrgrrgrggrggrrgrgrggrrrgrgrgrgrrgrrrgggggrgrrrrgrgggggggrgrgrrrgrrrgrrgrrgrrrrrgrggrrgrrgrggggrgrrgrgrggggrg...
output:
9683989352823
result:
ok 1 number(s): "9683989352823"
Test #68:
score: 0
Accepted
time: 464ms
memory: 122848kb
input:
1 ppppxxpxpxxxpxxpxxpxppxxpxpxxppxpxpxppxpxxxpxxxpxxxpxpxxpppppxxxxpxxxpppxxxpxxppppxpxppxpxxppppxpxxpppxxppppppppppppppppxxpxpxpxppxpppxpxppppxxpxpxxpxxppxpxxxpppxpppppxpxxxxpxpppxxpxxpppxppxxxxxpxpxxxppxpxpxpxxppxpxxxxxpxppxppxxpxpxxppppxppxpxpxpxxpxpxxxxpxxpxpxppxpppppxpppppxxxpxpxxppxpppxpxpxxxx...
output:
7205972642722
result:
ok 1 number(s): "7205972642722"
Test #69:
score: 0
Accepted
time: 535ms
memory: 124040kb
input:
1 ejjejejeejjeejjjeejeejjejjjjjjejjjeejjeeejeejjejjejjeeejejejjeeeejjjjjjejejejejejjeeeejjjjejeeejjeeejejjjejeejeeejjjejjjjeeejejjjjjeeeeeeeejjjeeeejjjjjjeeejejjejjjjeeejjjjjjjjejjjejeejjejjeejjjeejjeejjejejjeejejejejjjeejejeeejeeeejeejeejejejejejjjjejjeejeeejeeejeejeejjejjeeejjeeeeejjejjejeejejjjje...
output:
2039730367815
result:
ok 1 number(s): "2039730367815"
Test #70:
score: 0
Accepted
time: 649ms
memory: 130212kb
input:
1 pqpppppqqqqqpqqpppqqqqpqpqqppqqppqqqppqqqqqppqqppqpqppqppqqpppppqppppqqppppqpppqppqpqpqqppppqqpqqppppqpqqpppqqpqpppqqpqqqppqqqpqppqqqqqqqqqpppqqqqqqpqppqppqqpqppqqpqpqpqppppqqqqpqpqqqqqpqqpppqqppqqpqqqqqpqqppqpqqpqqqqqqpppqppqppqqqpqqpqqqqqpqppppqqpqpqqppppqqqqqpqqppppqqqqppqpqqqpqpqqppqqppqqqqpqq...
output:
973434443636
result:
ok 1 number(s): "973434443636"
Test #71:
score: 0
Accepted
time: 233ms
memory: 109436kb
input:
1 nsnspgyvnnspgyvnnsnspgyvnnspgyvnspgnspgyvnnspgynspgyvnsnspgyvnnspgyvnnsnspgyvnnspgyvnspgnspgyvnnspgynspgyvnnspgyvnspgnspgyvnnspgynspgyvnnsnsnspgyvnnspgyvnspgnspgyvnnspgynspgyvnnspgyvnnsnspgyvnnspgyvnspgnspgyvnnspgynspgyvnnspgyvnspgnnsnspgyvnnspgyvnspgnspgyvnnspgynspgyvnnspgyvnspgnspgyvnnspgynspgyv...
output:
166159096418848
result:
ok 1 number(s): "166159096418848"
Test #72:
score: 0
Accepted
time: 222ms
memory: 107512kb
input:
1 ajdziajajdziajdaajajdziajajdziajdaajdziajajdziaajdziajaajdajdziajajdziajdaajdziajajdziaajdziajaajdziajajdziajdaajdziajajdziaajdziajajdziajdaajdziajajdziajdajdziajajdziajdziiizwephdgwmohngmcecsuajdziajajdziajdaajajdziajajdziajdaajdziajajdziaajdziajaajdajdziajajajdziajajdziajdaajajdziajajdziajdaajdz...
output:
102050081004728
result:
ok 1 number(s): "102050081004728"
Test #73:
score: 0
Accepted
time: 174ms
memory: 99728kb
input:
1 iqqbngyezahmrjxpyqslknxkvljgwlbftmsqmlnjiqqbngyezahmrjxpyqsiqqbngyezahmrjxpyqslknxkvljgwlbftmsqmlnjiqqbngyezahmrjxpyqslknxkvljgwlbftmsqmlnjqgqtzfyqvgzzayqiqqbngyezahmrjxpyqslknxkvljgwlbftmsqiqqbngyezahmrjxpyqslknxkvliqqbngyezahmrjxiqqbngyezahmrjxpyqslknxkvljgwlbftmsqmlnjiqqbngyezahmrjxpyqsiqqbngye...
output:
10274882153888
result:
ok 1 number(s): "10274882153888"
Test #74:
score: 0
Accepted
time: 199ms
memory: 105496kb
input:
1 skcfwksjxcarruibvgsmuqjisbipxukcteuedhjwkkhgstysyhjonndfkjdqswqvoufusxaoxvimegxvipioyhgxlkgougdeaaqkoscseahwrlolreitbrfjyhtctjkeyulodbxttwirspwnlhqgdmsuuovgntiqrmlsskcfwksjxcarruibvgsmuqjisbipxukcteuedhjwkkhgstysyhjonndfkjdqswqvoufusxaoxvimegxvipioyhgxlkgougdeaaqkoscseahwrlolreitbrfjyhtctjkeyulodb...
output:
3670322981913
result:
ok 1 number(s): "3670322981913"
Test #75:
score: 0
Accepted
time: 181ms
memory: 103540kb
input:
1 ulllqynfnacytluecglprkrdojvwttvznkamgqptxfbfodtnggqthcqrqtxokdcjesshjnnjmvbchjgsqghdrgnxutakrgsdkbaxyvfqxbeyrifwdqlhveceozuehcshqhdkulkgrgvrjlulfebvckpptybbxktagbkhjlxglczpfetutyrngxzhrwrlglticuhdsbhnysdjgwpaparpvwudccczlvhjdwtvbbozvfaflqohobdsbfkmwmtvhmtqxwghyhfygibbctnptdtesemarxcuxikvyktmfrciae...
output:
3178609760355
result:
ok 1 number(s): "3178609760355"
Test #76:
score: 0
Accepted
time: 215ms
memory: 105388kb
input:
1 qljkclxuyhroxjsbyoqzagiqtbmfmhvzjkpotocxnrdqtdpcobdeunulnndecubxnenptxpprrqpksmcgxmqthcvychdfmelnjlgbdhcmsgmqfbzrmttjpjjzjafsqzqqhwpohqgvztmeuatmpahteraweffrvrnmvsxsfosvlqhogooknxrlbnhdemrjhvrelwvftenxalkzpcbfdizmjechowvddmkrzaxoeecwxduunozyevezlkfjfnygwhwuvodnugyrdptxipqrrwflrpwdfeboidohndhegxrpv...
output:
231098330295
result:
ok 1 number(s): "231098330295"
Test #77:
score: 0
Accepted
time: 198ms
memory: 90948kb
input:
1 ahvxjejsrurnteasxdccttbcnbxuvcqfryqlrwlsalstlghccvtlyrdgelfwkkpboyvyoeobtwjclmsqdeplvouvzhgblwjyyqqmzohkfzuqtzinhncolhxcnlqnegdywfqevaebfiwzgiuljbkkbhvhizqgdifdipbsigcxlbulqeejolcpoywjxxivydiwdiofqhwcdfpbwqagfiuptyslvmlxemvmtgmxtzeuqcxwwjsdoozrxsvyevugtakwfeibijmrbxlpwbmtejofxhcllptzqxvllndlrgxxcz...
output:
115451201273
result:
ok 1 number(s): "115451201273"
Test #78:
score: 0
Accepted
time: 223ms
memory: 89512kb
input:
1 lauqzzvdtqdjlthyvkwpxolpobgcdjuwlnchrwzwdcqpwmgohltxwpkstbuxdvbkfjihnxyycpoxvjgbbpkgoriakrxanenrnzrhtiebqnlbwvgayvflgbvrnpcocwwcoswbifduhpiguiabylnuznhrzjnroisdyoaakesixcjywvruymdixmoqslcfumxheojztmfqquoxjgjqkncefdpktrajppibcrgadagqenaakdviapprxmdvyuxvxvtfbklptwkctvumpigutisgyopaykojtzljizpczzkult...
output:
35638571793
result:
ok 1 number(s): "35638571793"
Test #79:
score: 0
Accepted
time: 242ms
memory: 90092kb
input:
1 bupceluctlyeiqvdgsqrhgmnoxtrvekdaejgsnahbzwkmonoaawcliigdgaaptqkxguicboozzrnjpmzepyurcwhexwaplacbgxvwunjezqlzdnimbimotlhmlmvisfumzzfxhdmtnnsshqahvzdnudxyvwtfhzmfrasrricqzwdxjcpebqodmnylrznwhsposweumdggbzydhjxohhchgcmoytrrjgzyqufarymdswaoabxxipxcqsvefzdtglrpucahvxsqjalwnhoipprgsqvnrttwoswssroqbpbbv...
output:
5200701650
result:
ok 1 number(s): "5200701650"
Test #80:
score: 0
Accepted
time: 245ms
memory: 101440kb
input:
1 iiuuiuiuhuiuiuhiuihiihuhihiuiiuuiuiuhuiuiuhiuihiihuhihiuiuuhihhuuhhiiiuihuuhuiuhhuuhiiuuiuiuhuiuiuhiuihiihuhihiuiiuuiuiuhuiuiuhiuihiihuhihiuiuuhiiuuiuiuhuiuiuhiuihiihuhihiuiiuuiuiuhuiuiuhiuihiihuhihiuiuuhihhiiuuiuiuhuiuiuhiuihiihuhihiuiiuuiuiuhuiuiuhiuihiihuhihiuiuuhihhuuhhiiiuihuuhuiuhhuuhiiuuiui...
output:
17892681445892
result:
ok 1 number(s): "17892681445892"
Test #81:
score: 0
Accepted
time: 253ms
memory: 107768kb
input:
1 pippfiipiipfppifffpiffiifffipfipfiffpppfffiiifpfififffpiffippipffpifffpifpppffpiifiifiipiffiffffppfififippfipfppipipiipfifpiiififfffpifffipfpfiffiippfpiiifffififififfpffpiffippiipppipipfppiippfpipfipifipifpipfiipfppppipifppippffffpiiipfpppifpipfffpppipipipppfppppfippiifffpiiiiipfifppppffififfpipfp...
output:
2237974405555
result:
ok 1 number(s): "2237974405555"
Test #82:
score: 0
Accepted
time: 334ms
memory: 110256kb
input:
1 lovovovovvlvoolvollovloovlllvllvllloloovlvllllvlvovooovlvovvlooooovlvovvovovovvlvlvolvllovoolovvvvvlvvoolovllovvlovllolvllloovvvloovlooovovlovlooovvvvolooolvlvllllvvovlvllooolovlloovvlollolvovlooololllooolvlvoolvolvlllllovoloololovooolovvvolvoloolvvlovvolvvvvvoloovvololvvlvvlvvoollololovovloovoolv...
output:
583505052506
result:
ok 1 number(s): "583505052506"
Test #83:
score: 0
Accepted
time: 243ms
memory: 110112kb
input:
1 yqvyqubuqyybbbuqbvbqyyqyvqbvyuyqvbqvvyqubbyqyybubqvqqvvyvyvyuvqqvqvbvbbybvvuybububquuqqbyyvyqqbvbqubuuqbbvuyqqubyqvyqubuqyybbbuqbvbqyyqyvqbvyuyqvbqvvyquyqvyqubuqyybbbuqbvbqyyqyvqbvyuyqvbqvvyqubbyqyybubqvqqvvyvyvyuvqqvqvbvbbybvvuybububquuqqbyqvyqubuqyybbbuqbvbqyyqyvqbvyuyqvbqvvyqubbyqyybubqvqqvvyvy...
output:
6298690918420
result:
ok 1 number(s): "6298690918420"
Test #84:
score: 0
Accepted
time: 250ms
memory: 103308kb
input:
1 mllmmddumdmlhhllllulhldluhmludmmdmuhlmhuhduldhhdmmmlmlhhmlhmllhmluhumlmlluhmmhluuddmmluuulumldudhdhudummldumhmduuuldullmudhlumduuuuhmdmlmdmuhhhduudllmlhdhlmdlldluldlmhullmdlhdlhmlhuduldldhllhhdddhhlummldmhuhlluuhhhuhhdhhumdumdhhmmhmudlmmmumuhuddmddhlmuumluluummhddhuhlhludllmlmuluhuhlduulhdhhddhlud...
output:
958602500960
result:
ok 1 number(s): "958602500960"
Test #85:
score: 0
Accepted
time: 251ms
memory: 102552kb
input:
1 rrfdppfdddxfrxxrfxpfxffrfdxffxfdxxxppppffxpdpxffdprdfrpxxfprfrdprpdfrrfxrdfffddrdpdxddffpfrprpdrfdxffxpfpfxxpxppxppfxddfpfxxrfpppdxprffpxxddrxdxdrpxffxrffrrrdrpfxprdrxfxrxppprppdfpfrfpdxfpxrrpppdrpdpprfxrprdpdxfxrfprrdrddfprxrfrxpfdpxpdffxrrfppppfprrrppdrxffpxfdxffddprpfxxxpxpxprxpfxfpxfdrrrdddfrp...
output:
1123136417942
result:
ok 1 number(s): "1123136417942"