Checker (Windows)
//chk.cpp
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
typedef long long ll;
void SetColorAndBackground(int ForgC, int BackC) {
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
int main() {
system("@echo off");
//切换到工作目录
system("cd D:\\OI");
system("cd ..//..//..//..//..//..//..//..//..//");
system("D:");
//一个cmd特性(还是我的cmd有问题?),见文尾
// if (!system("fc>nul 2>nul test.out true.out"))
// cout << "Yes!";
// else cout << "No!";
int cnt = 0;
int flg = 0;
string True;
cout << "True Program Name:";
cin >> True;
string __STD;
cout << "Need Check Program Name:";
cin >> __STD;
True += ".exe < .in > true.out";
__STD += ".exe < .in > std.out";
int k = 100;
while (cnt < k) {
system("gen > .in");
system(True.c_str());
system(__STD.c_str());
if (!system("fc>nul 2>nul /w true.out std.out")) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
cout << "Accepted!\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}else {
flg = 1;
string tmp = "";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
cout << "WA on #" << cnt + 1 << '\n' << "***** .IN\n";
system("type .in");
cout << '\n';
system("fc /w true.out std.out");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
return 0;
}
cnt ++;
}
if (!flg) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
cout << "Conguatulations! 100pts!!!";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
}
Genarator
//gen.cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 70;
mt19937 rd(chrono::system_clock::now().time_since_epoch().count());
int main() {
//rd() % N来生成一个随机数
return 0;
}
true.cpp 存放暴力或题解
std.cpp 自己的程序
流程:
- 根据题目要求编写数据生成器Genarator,并在
true.cpp
中编写暴力或粘贴题解。
- 编译
true.cpp
和 Genarator(不运行)。
- 编译运行你的程序并确保通过样例。
- 编译运行
chk.cpp
并依次输入你程序的名字和 Genarator 的名字。
- 改变
chk.cpp
中 k
的数值来控制需要测评的数据数。
cmd特性