lu某学完 网络流 后, 十分想一展身手, 于是打了一场 小学组 比赛, 自信的说:“AK 虐爆全场”
n 年后 成绩出来了, lu某一看, 大喊一声:******, 报零了。
对拍
对拍我们需要四个文件
1.checker (oj)
2.datamaker (数据生成器)
3.test (待验证的“正解”)
4.std (暴力,一定正确的程序, 生成std.out)
1.checekr.cpp 对拍最重要的东西
#include <windows.h>
#include <cstdio>
#include <ctime>
using namespace std;
const int N = 100;
const int TIME = 1;
bool f = 0;
int main ()
{
for (int i = 1; i <= N; i ++ )
{
system ("datamaker.exe>data.in");
double st = clock();
system ("test.exe<data.in>test.out");
double ed = clock();
system ("std.exe<data.in>std.out");
if (ed - st > TIME * 1000)
{
printf ("TLE #%d Time : %.3lfms\n\n", i, ed - st);
f = 1;
break;
}
if (system ("fc test.out std.out"))
{
printf ("WA #%d\n\ntest.out != std.out\n", i);
f = 1;
break;
}
else printf ("AC #%d Time: %.3lfms\n\n", i, ed - st);
}
if (f)
printf ("WA or TLE");
else
printf ("AC");
return 0;
}
2.datamaker.cpp
//
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>
// #include <bits/stdc++.h> //万能头
#define INF 0x3f3f3f3f
#define INT_INF 0x3f3f3f3f
#define LONGLONG_INF 0x3f3f3f3f3f3f3f3f
#define DOUBLE_INF 1E5 + 3;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N = 100010;
const int INT = 32768;
const long long LL = 9223372036854775807;
//
int n;
//
int raint (int r)
{
return (rand () + r) % r;
}
signed main ()
{
srand (time (0));
//
n = raint (INT) + 1;
printf ("%d\n", n);
for (int i = 0; i < n; i ++ )
{
int q;
q = raint (INT) + 1;
printf ("%d ", q);
}
//
return 0;
}
//g++ t.cpp -o t -std=c++11 -g
//gdb t
3. test.cpp
我们以快排为例
#include <iostream>
using namespace std;
const int N = 100010;
int n;
int q[N];
void quick_sort (int l, int r)
{
if (r <= l) return ;
int x = q[(l + r) >> 1], i = l - 1, j = r + 1;
while (i < j)
{
do i ++ ; while (q[i] < x);
do j -- ; while (q[j] > x);
if (i < j) swap (q[i], q[j]);
}
quick_sort (l, j);
quick_sort (j + 1, r);
}
int main ()
{
scanf ("%d", &n);
for (int i = 0; i < n; i ++ ) scanf ("%d", &q[i]);
quick_sort (0, n - 1);
for (int i = 0; i < n; i ++ ) printf ("%d ", q[i]);
return 0;
}
4.std.cpp
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int q[N];
int n;
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) scanf("%d", &q[i]);
sort (q, q + n);
for (int i = 0; i < n; i ++ ) printf("%d ", q[i]);
return 0;
}
我们都编译一下;
点一下checker.exe就可以了;
制作不易,鞦戨攧戰覌鏃(求个点赞关注)