为什么这份代码一删 freopen 就挂
  • 板块学术版
  • 楼主cancan123456
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/4/16 12:17
  • 上次更新2023/10/28 03:37:55
查看原帖
为什么这份代码一删 freopen 就挂
448887
cancan123456楼主2022/4/16 12:17

把第 48 行的 freopen 删了就挂了。

#include <cmath>
#include <ctime>
#include <cstdio>
#include <cstdlib>
using namespace std;
const int N = 10;
char IFN[10] = "00_in.txt";
char OFN[11] = "00_out.txt";
int a[N];
int min(int a, int b) {
	return a < b ? a : b;
}
void gen_data() {
	freopen(IFN, "w", stdout);
	a[0] = rand();
	for (int i = 1; i < N; i++) {
		if ((rand() & 1) == 1) {
			a[i] = a[i - 1] + 1;
		} else {
			a[i] = a[i - 1] - 1;
		}
	}
	int min_val = 0x7fffffff;
	for (int i = 0; i < N; i++) {
		min_val = min(min_val, a[i]);
	}
	for (int i = 0; i < N; i++) {
		a[i] -= min_val;
		printf("%d ", a[i]);
	}
	putchar(10);
	for (int i = 0; i < N; i++) {
		int l = ((rand() << 15) | rand()) % N + 1;
		int r = ((rand() << 15) | rand()) % N + 1;
		if (l > r) {
			l ^= r ^= l ^= r;
		}
		printf("%d %d\n", l, r);
	}
}
int f[N][20];
int max(int a, int b) {
	return a > b ? a : b;
}
void gen_answer() {
	freopen(IFN, "r", stdin);
	freopen(OFN, "w", stdout); // 就是这里 
	for (int i = 0; i < N; i++) {
		scanf("%d", f[i]);
	}
	for (int j = 1; j < 20; j++) {
		for (int i = 0; i + (1 << j) - 1 < N; i++) {
			f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
		}
	}
	for (int l, r, q, i = 0; i < N; i++) {
		scanf("%d %d", &l, &r);
		l--;
		r--;
		q = log2(r - l + 1);
		printf("%d\n", max(f[l][q], f[r - (1 << q) + 1][q]));
	}
}
int main() {
	gen_data();
	gen_answer();
//	for (int i = 0; i < 20; i++) {
//		fprintf(stderr, "---- 开始生成第 %d 组数据 ----\n", i + 1);
//		IFN[0] = (i / 10) + '0';
//		OFN[0] = (i / 10) + '0';
//		IFN[1] = (i % 10) + '0';
//		OFN[1] = (i % 10) + '0';
//		srand((i << 1) + (i >> 9) + (i & 19) + (i | 19) + (i ^ 810));
//		clock_t t1 = clock();
//		gen_data();
//		clock_t t2 = clock();
//		fprintf(stderr, "输入数据生成完成, 耗时 %lf s.\n", (t2 - t1) / 1000.0);
//		gen_answer();
//		clock_t t3 = clock();
//		fprintf(stderr, "输出数据生成完成, 耗时 %lf s.\n", (t3 - t2) / 1000.0);
//	}
	return 0;
}
2022/4/16 12:17
加载中...