三个结果都对得上吗

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

运行下面这段程序:

#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <utility>
#include <vector>
using namespace std;

pair<int, int> two_sum(const vector<int>& a, int target) {
    int lo = 0;
    int hi = (int)a.size() - 1;
    while (lo < hi) {
        int s = a[lo] + a[hi];
        if (s == target) return {lo, hi};
        if (s < target) lo++;
        else hi--;
    }
    return {-1, -1};
}

int mid_index(const vector<int>& a) {
    int slow = 0;
    int fast = 0;
    while (fast + 1 < (int)a.size()) {
        slow += 1;
        fast += 2;
    }
    return slow;
}

int max_window(const vector<int>& a, int k) {
    int s = 0;
    for (int i = 0; i < k; i++) s += a[i];
    int best = s;
    for (int i = k; i < (int)a.size(); i++) {
        s += a[i] - a[i - k];
        if (s > best) best = s;
    }
    return best;
}

int main() {
    auto p = two_sum({13, 15, 17, 23, 24}, 40);
    bool ok = p.first == 2 && p.second == 3 && mid_index({13, 15, 17, 23, 24}) == 2 && max_window({17, 8, 15, 13, 23, 24, 19}, 3) == 66;
    cout << boolalpha << ok << endl;
}

(本题用 g++ -std=c++17 -O0 编译。)

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论