0

我为 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);
                               ^
4

0 回答 0