对拍

对拍模板(P1001 A+B Problem

Part 1

随机造数据的代码(\(data\))。

#include<bits/stdc++.h>
const int mod=1e6;
using namespace std;
int main()
{
	freopen("data.in","w",stdout);
	srand(time(0));//通过time来制造随机数,如果不用输出的是伪随机数
	//按输入格式随机并输出
	return 0;
}

Part 2

能保证正确率的代码(\(std\))。

文件输入输出部分

	freopen("data.in","r",stdin);
	freopen("std.out","w",stdout);

Part 3

不确定正确率但比 \(std\) 更优的代码(\(test\))。

文件输入输出部分

	freopen("data.in","r",stdin);
	freopen("test.out","w",stdout);

Part 4

判断输出是否相同的代码(\(judge\))。

#include<bits/stdc++.h>
#include<windows.h>
const int Case=20;//测试点个数
using namespace std;
int main()
{
	for(int i=1;i<=Case;i++)
	{
		system("data.exe > data.in");//运行data,并将造的数据存在data.in里
		system("std.exe < data.in > std.out");//运行std.exe,将data.in里的数据输入至std.exe,再将输出存在std.out里
		double Begin=clock();//记录目前代码运行开始时的时间
		system("test.exe < data.in > test.out");//运行test.exe,将data.in里的数据输入至test.exe,再将输出存在test.out里
		double End=clock();//记录目前代码运行结束时的时间
		bool res=system("fc test.out std.out");//判断std.out与test.out的输出是否相同,相同返回false,不同返回true
  	   	printf("#测试点 %d\n",i);
		if(!res)//输出相同
		{
			printf("AC %.3lfms\n",End-Begin);
			//运行开始时间减去运行结束时间就是代码运行总时间
		}
		else//不满足
		{
			puts("WA");
			break;//退出循环
		}
 		Sleep(500);//休眠半秒
	}
	return 0;
}
posted @ 2023-03-01 19:24  Symbolize  阅读(44)  评论(0)    收藏  举报