data.cpp
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<algorithm>
using namespace std;
int n, m;
int main(int argc, char * argv[])
{
int t = 10;
if(argc > 1)
{
t = atoi(argv[1]);
}
srand(time(0) + t);
n = rand() % 10 + 1; // 0 - RANDMAX
m = rand() % 5 + 1;
while(n <= m)
{
n = rand()% 10 +1;
}
cout << n << " " << m << endl;
int a[11];
for(int i = 1; i <= m; i++)
a[i] = i;
for(int i = m + 1; i <= n; i++)
{
a[i] = rand() % m + 1;
}
random_shuffle(a + 1, a + n + 1);
for(int i = 1; i <= n; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
makedata.cc
// 1. data.cc > 1.in std < 1.in > 1.ans data.cc std.cc
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
// 1. compile std.cc data.cc
system("g++ std.cc -o std -O2");
system("g++ data.cc -o data -O2");
for (int i = 1; i <= 10; i++)
{
char f[200];
sprintf(f, "data %d > %02d.in", i, i);
system(f);
sprintf(f, "std < %02d.in > %02d.ans", i, i);
system(f);
cout << i << " OK..." << endl;
}
return 0;
}
pai.cpp
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int main()
{
// 1. 先编译3个文件 force.cpp, solve.cpp, data.cpp
system("g++ force.cpp -o force");
system("g++ solve.cpp -o solve");
system("g++ data.cpp -o data");
// 2. 生成输入文件 pai.in
system("./data > pai.in");
for(int i = 1; i <= 10000; i++)
{
// 1. 用force生成答案 pai.ans
system("force < pai.in > pai.ans");
// 2. 生成pai.out
system("solve < pai.in > pai.out");
// 3. 比较两个生成的文件
if(system("fc pai.ans pai.out >null"))
{
cout << i << ": WA!" << endl;
break;
}
else
cout << i << ": AC" << endl;
}
return 0;
}