QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#885823#9922. Mah-jongshanganzeCompile Error//C++141.6kb2025-02-06 18:45:322025-02-06 18:46:09

Judging History

This is the latest submission verdict.

  • [2025-02-06 18:46:09]
  • Judged
  • [2025-02-06 18:45:32]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int a[N],s[N][10],t[10],h[N],z[10],n;
int sum[N];
long long ans;
int check(int i,int j){
	for(int q=1;q<=8;q++)if(s[j][q]-s[i][q]<h[q])return 0;
	return 1;
}
int p,Pow[10];
vector<int>f[N],Ask[N];
void dfs(int i){
	if(i==7){
		p++;
		for(int q=0;q<=n;q++)Ask[q].clear();
		for(int q=0;q<=8000;q++)f[q].clear(),f[q].push_back(0),sum[q]=0;
		for(int q=1;q<=8;q++)h[q]=t[q]=0;
		for(int q=1;q<=6;q++){h[q]+=z[q];h[q+1]+=z[q];h[q+2]+=z[q];}
		int l=0,o=0,opt=0;
		for(int q=1;q<=8;q++)if(h[q]==0)opt++;
		for(int r=1;r<=n;r++){
			for(int j=1;j<=8;j++)s[r][j]=s[r-1][j];
			s[r][a[r]]++;if(s[r][a[r]]==h[a[r]])opt++;
			o=o-t[a[r]]*Pow[8-a[r]];
			t[a[r]]=s[r][a[r]]%3;
			o=o+t[a[r]]*Pow[8-a[r]];
			while(l<r&&opt==8){
				int p=1;
				for(int q=1;q<=8;q++)if(s[r][q]-s[l+1][q]<h[q]){p=0;break;}
				if(p==0)break;
				l++;
			}
			if(opt==8){
				int k=0;for(int i=1;i<=8;i++)k=k*3+(s[r][i]-h[i])%3;
				int j=f[k][upper_bound(f[k].begin(),f[k].end(),l)-f[k].begin()-1];
				Ask[j].push_back(k);
			}
			f[o].push_back(r);
		}
		for(int j=0;j<=8;j++)t[j]=0;
		o=0;
		for(int j=0;j<=n;j++){
			if(j!=0)o-=t[a[j]]*Pow[8-a[j]];
			t[a[j]]=(t[a[j]]+1)%3;
			if(j!=0)o+=t[a[j]]*Pow[8-a[j]];
			sum[o]++;
			for(auto k:Ask[j])ans+=sum[k];
		}
		return ;
	}
	z[i]=0;dfs(i+1);
	z[i]=1;dfs(i+1);
	z[i]=2;dfs(i+1);
}
int main(){
	Pow[0]=1;for(int q=1;q<=8;q++)Pow[q]=Pow[q-1]*3;
	int T;T=read();
	while(T--){
		ans=0;n=read();
		for(int q=1;q<=n;q++)a[q]=read();
		dfs(1);
		cout<<ans<<"\n";
	}
	return 0;
}

详细

answer.code: In function ‘int main()’:
answer.code:58:21: error: too few arguments to function ‘ssize_t read(int, void*, size_t)’
   58 |         int T;T=read();
      |                 ~~~~^~
In file included from /usr/include/unistd.h:1217,
                 from /usr/include/x86_64-linux-gnu/bits/sigstksz.h:24,
                 from /usr/include/signal.h:328,
                 from /usr/include/c++/14/csignal:42,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:116,
                 from answer.code:1:
/usr/include/x86_64-linux-gnu/bits/unistd.h:26:1: note: declared here
   26 | read (int __fd, void *__buf, size_t __nbytes)
      | ^~~~
answer.code:60:29: error: too few arguments to function ‘ssize_t read(int, void*, size_t)’
   60 |                 ans=0;n=read();
      |                         ~~~~^~
/usr/include/x86_64-linux-gnu/bits/unistd.h:26:1: note: declared here
   26 | read (int __fd, void *__buf, size_t __nbytes)
      | ^~~~
answer.code:61:47: error: too few arguments to function ‘ssize_t read(int, void*, size_t)’
   61 |                 for(int q=1;q<=n;q++)a[q]=read();
      |                                           ~~~~^~
/usr/include/x86_64-linux-gnu/bits/unistd.h:26:1: note: declared here
   26 | read (int __fd, void *__buf, size_t __nbytes)
      | ^~~~