我为 USACO 银牌问题“休息站”(2018 年 2 月)编写了一些代码。但是,当我提交代码时,freopen 和 scanf 存在一些问题。
我尝试更改 to 并添加 return 0,但它们都不起作用。我包含了 stdio.h、算法和向量库。
using namespace std;
typedef pair < int, int > ii;
int l, n, rf, rb;
vector < pair < int, int > > map;
int main() {
freopen("reststops.in", "r", stdin);
freopen("reststops.out" "w", stdout);
scanf("%d %d %d %d", &l, &n, &rf, &rb);
for(int i = 0; i < n; i ++) {
int x, c;
scanf("%d %d", &x, &c);
map.push_back(ii(x, c));
}
int start_idx = 0; int start = 0;
int maxi = 0; int max_idx = 0;
int ans = 0;
while(true) {
bool flag = false;
for(int i = start_idx; i < map.size(); i ++) {
if(maxi < map[i].second) {
max_idx = i;
maxi = map[i].second;
flag = true;
}
}
if(!flag) {
if(start_idx == map.size() - 1) break;
else {
ans += (rf - rb) * (map[map.size() - 1].first - map[start_idx].first);
break;
}
}
if(start_idx == 0) start = 0;
else start = map[start_idx].first;
int curr_f = (map[max_idx].first - start) * rf;
int curr_b = (map[max_idx].first - start) * rb;
ans += (curr_f - curr_b) * map[max_idx].second;
start_idx = max_idx;
}
printf("%d", ans);
return 0;
}
编译错误
main.cpp:在函数“int main()”中:
main.cpp:14:40:错误:无法将参数 '2' 的 '_IO_FILE*' 转换为 'const char*' 到 'FILE* freopen(const char*, const char*, FILE*)'
freopen("reststops.out" "w", 标准输出);
^
main.cpp:13:40: 警告: 忽略'FILE* freopen(const char*, const char*, FILE*)'的返回值,用属性warn_unused_result [-Wunused-result]声明
freopen("reststops.in", "r", 标准输入);
^
main.cpp:16:43:警告:忽略'int scanf(const char*, ...)'的返回值,用属性warn_unused_result [-Wunused-result]声明
scanf("%d %d %d %d", &l, &n, &rf, &rb);
^
main.cpp:19:31:警告:忽略“int scanf(const char*, ...)”的返回值,用属性 warn_unused_result [-Wunused-result] 声明
scanf("%d %d", &x, &c);
^