Checker finished.
查看原帖
Checker finished.
60864
tiger2005楼主2020/8/4 22:17
#include "testlib.h"
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <vector>
using namespace std;
bool mp[2010][2010];
int N;int sco=25;
vector<int> vec;
bool gt[2010];
int main(int argc,char ** argv){
	registerTestlibCmd(argc, argv);
	N=inf.readInt();
	for(int i=2;i<=N;i++)
		for(int j=1;j<i;j++){
			char ch=inf.readChar();
			while(ch!='R' && ch!='B')	ch=inf.readChar();
			mp[i][j]=mp[j][i]=(ch=='R');
		}
	for(int p=1;p<=N;p++){
		int jans=ouf.readInt();
		int pans=ans.readInt();
		vec.clear();
		for(int i=0;i<jans;i++)
			vec.push_back(ouf.readInt(1,N));
		for(int i=0;i<pans;i++)
			ans.readInt();
		if(jans<pans){
			sco=0;continue;
		}
		if(jans>2*pans || vec[0]!=p){
			sco=0;continue;
		}
		for(int i=0;i<jans;i++)
			gt[vec[i]]=true;
		bool dt=true;
		for(int i=1;i<=N;i++)
			if(!gt[i]){
				dt=false;
				break;
			}
		memset(gt,false,sizeof(gt));
		if(!dt){
			sco=0;continue;
		}
		bool used=false;int curr=mp[vec[0]][vec[1]];
		for(int i=2;i<jans;i++){
			if(curr!=mp[vec[i-1]][vec[i]]){
				if(used){
					sco=0;break;
				}
				used=true;curr=mp[vec[i-1]][vec[i]];
			}
		}
		if(jans==pans)
			sco=min(25,sco);
		else	sco=min(8+8*((2*pans-jans)/(pans-1)),sco);
	}
	if(sco==25)
        quitf(_ok,"Answer Correct!");
    else if(sco==0)
    	quitf(_wa,"Wrong Answer!");
    else
        quitp(1.0*sco/25,"Answer Partially Correct!");
	return 0;
}
2020/8/4 22:17
加载中...