SPJ 征集请求

P3588 [POI2015] PUS

@[StudyingFather](/user/22030) 去我们OJ嫖的一个,这题是我们模拟赛的一个原题,可能spj需要改一下? ```cpp #include <bits/stdc++.h> using namespace std; ifstream fin,fout,fstd; ofstream fscore,freport; const int N=1e5+50, L=20; int n,s,m; int a[N], mn[N][L+1], lg[N]; inline int ask(int l,int r) { if(l>r) return 0; int i=lg[r-l+1]; return max(mn[l][i],mn[r-(1<<i)+1][i]); } inline int judge() { string sta1, sta2; fstd>>sta1; if(!(fout>>sta2)) {return cerr<<"Less Output Than Expected."<<'\n',0;} if(sta1!=sta2) {return cerr<<"Wrong Answer."<<'\n',0;} else if(sta2[0]=='N') {return cerr<<"Accept."<<'\n',1;} fin>>n>>s>>m; for(int i=1;i<=n;i++) if(!(fout>>a[i])) {return cerr<<"Less Output Than Expected."<<'\n',0;} for(int i=1;i<=s;i++) { int p,d; fin>>p>>d; if(a[p]!=d) {return cerr<<"Wrong Answer."<<'\n',0;} } for(int i=1;i<=n;i++) if(a[i]<1 || a[i]>1e9) {return cerr<<"Wrong Answer."<<'\n',0;} lg[1]=0; for(int i=2;i<=n;i++) lg[i]=lg[i>>1]+1; for(int i=1;i<=n;i++) mn[i][0]=a[i]; for(int i=1;i<=L;i++) for(int j=1;j+(1<<i)-1<=n;j++) mn[j][i]=max(mn[j][i-1],mn[j+(1<<(i-1))][i-1]); for(int i=1;i<=m;i++) { static int p[N],k,l,r,mnv,mxv; fin>>l>>r>>k; mnv=1e9+1, mxv=0; for(int j=1;j<=k;j++) fin>>p[j], mnv=min(mnv,a[p[j]]); mxv=max(mxv,ask(l,p[1]-1)); mxv=max(mxv,ask(p[k]+1,r)); for(int j=2;j<=k;j++) mxv=max(mxv,ask(p[j-1]+1,p[j]-1)); if(mnv<=mxv) {return cerr<<"Wrong Answer."<<'\n',0;} } return cerr<<"Accept."<<'\n',1; } int main(int argc,char *argv[]){ fin.open("input"); //输入文件 fout.open("user_out"); //选手输出文件 fstd.open("answer"); //标准输出文件 //fscore.open(argv[5]); //freport.open(argv[6]); //错误报告 //int score=atoi(argv[4]); int score = 100; cout<<score*judge()<<endl; fin.close(); fout.close(); fstd.close(); fscore.close(); //freport.close(); return 0; } ```
by ForgotMe @ 2022-02-17 23:24:12


@[StudyingFather](/user/22030) 请管理员加上上面的 spj。
by ForgotMe @ 2022-02-20 10:05:32


@[Silver187](/user/154560) added & thanks.
by StudyingFather @ 2022-02-20 19:34:41


|