QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#91687#801. 回文自动机zyz07#Compile Error//C++112.1kb2023-03-29 12:55:212023-03-29 12:55:24

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-03-29 12:55:24]
  • Judged
  • [2023-03-29 12:55:21]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
#define For(Ti,Ta,Tb) for(int Ti=(Ta);Ti<=(Tb);++Ti)
#define Dec(Ti,Ta,Tb) for(int Ti=(Ta);Ti>=(Tb);--Ti)
#define Debug(...) fprintf(stderr,__VA_ARGS__)
using ll=long long;
const int N=1e6+5,LogN=21;
int n;char s[N];
struct SAM{
	struct Node{
		int len,link,ed;
		array<int,26> nxt;
	}t[N*2];
	int size,last,pres[N];
	int New(){
		t[size]={0,0,0,{}},t[size].nxt.fill(-1);
		return size++;
	}
	void Init(){
		size=last=0;
		New(),t[0].link=-1;
	}
	void Extend(char _c){
		int cur=New(),c=_c-'a';
		t[cur].len=t[last].len+1,t[cur].ed=1;
		int p=last;last=pres[t[cur].len]=cur;
		while(~p&&!~t[p].nxt[c]) t[p].nxt[c]=cur,p=t[p].link;
		if(!~p) return;
		int q=t[p].nxt[c];
		if(t[p].len+1==t[q].len) t[cur].link=q;
		else{
			int cl=size++;
			t[cl]={t[p].len+1,t[q].link,0,t[q].nxt};
			while(~p&&t[p].nxt[c]==q) t[p].nxt[c]=cl,p=t[p].link;
			t[q].link=t[cur].link=cl;
		}
	}
	vector<int> e[N*2];
	int anc[N*2][LogN],siz[N*2];
	void DFS(int u){
		siz[u]=t[u].ed;
		For(j,1,LogN-1) anc[u][j]=anc[anc[u][j-1]][j-1];
		for(int v:e[u]) anc[v][0]=u,DFS(v),siz[u]+=siz[v];
	}
	void Build(){
		For(i,1,size-1) e[t[i].link].push_back(i);
		DFS(0);
	}
	int Substr(int l,int r){
		int u=pres[r];
		Dec(j,LogN-1,0){
			int v=anc[u][j];
			if(v&&t[v].len>=r-l+1) u=v;
		}
		return u;
	}
}sam;
char t[N*2];int d[N*2],L[N*2],R[N*2],orig[N*2];
int main(){
	ios::sync_with_stdio(false),cin.tie(nullptr);
	cin>>(s+1),n=strlen(s+1);
	sam.Init();
	For(i,1,n) sam.Extend(s[i]);
	sam.Build();
	int len=0;
	t[0]='@',t[++len]='#';
	For(i,1,n) t[++len]=s[i],orig[len]=i,t[++len]='#';
	For(i,1,len) R[i]=(orig[i]?orig[i]:R[i-1]);
	Dec(i,len,1) L[i]=(orig[i]?orig[i]:L[i+1]);
	ll ans=0;
	For(i,0,25) ans=max(ans,count(s+1,s+n+1,i+'a'));
	for(int i=1,l=0,r=0;i<=len;++i){
		if(r>=i) d[i]=min(r-i+1,d[l+r-i]);
		else d[i]=1;
		while(t[i-d[i]]==t[i+d[i]]){
			int _l=L[i-d[i]],_r=R[i+d[i]];
			if(_l<=_r&&orig[i-d[i]]){
				ans=max(ans,1LL*sam.siz[sam.Substr(_l,_r)]*(_r-_l+1)*(_r-_l+1));
			}
			++d[i];
		}
		if(i+d[i]>r) l=i-d[i]+1,r=i+d[i]-1;
	}
	cout<<ans<<'\n';
	return 0;
}

Details

answer.code: In function ‘int main()’:
answer.code:71:28: error: no matching function for call to ‘max(ll&, std::iterator_traits<char*>::difference_type)’
   71 |         For(i,0,25) ans=max(ans,count(s+1,s+n+1,i+'a'));
      |                         ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/char_traits.h:39,
                 from /usr/include/c++/11/ios:40,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from answer.code:1:
/usr/include/c++/11/bits/stl_algobase.h:254:5: note: candidate: ‘template<class _Tp> const _Tp& std::max(const _Tp&, const _Tp&)’
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
answer.code:71:28: note:   deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ and ‘std::iterator_traits<char*>::difference_type’ {aka ‘long int’})
   71 |         For(i,0,25) ans=max(ans,count(s+1,s+n+1,i+'a'));
      |                         ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/char_traits.h:39,
                 from /usr/include/c++/11/ios:40,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from answer.code:1:
/usr/include/c++/11/bits/stl_algobase.h:300:5: note: candidate: ‘template<class _Tp, class _Compare> const _Tp& std::max(const _Tp&, const _Tp&, _Compare)’
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
answer.code:71:28: note:   deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ and ‘std::iterator_traits<char*>::difference_type’ {aka ‘long int’})
   71 |         For(i,0,25) ans=max(ans,count(s+1,s+n+1,i+'a'));
      |                         ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from answer.code:1:
/usr/include/c++/11/bits/stl_algo.h:3461:5: note: candidate: ‘template<class _Tp> _Tp std::max(std::initializer_list<_Tp>)’
 3461 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3461:5: note:   template argument deduction/substitution failed:
answer.code:71:28: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘long long int’
   71 |         For(i,0,25) ans=max(ans,count(s+1,s+n+1,i+'a'));
      |                         ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:65,
                 from answer.code:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note: candidate: ‘template<class _Tp, class _Compare> _Tp std::max(std::initializer_list<_Tp>, _Compare)’
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   template argument deduction/substitution failed:
answer.code:71:28: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘long long int’
   71 |         For(i,0,25) ans=max(ans,count(s+1,s+n+1,i+'a'));
      |                         ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~