QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#885823 | #9922. Mah-jong | shanganze | Compile Error | / | / | C++14 | 1.6kb | 2025-02-06 18:45:32 | 2025-02-06 18:46:09 |
Judging History
This is the latest submission verdict.
- [2025-02-06 18:46:09]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [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;
}
Details
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) | ^~~~