let menu = ["Home", "Algorithms", "CodeHub", "VNOI Statistics"];

Overview

MAXARR1 - Help Conan 12

Bài này khá đơn giản, chỉ cần tính mảng A theo công thức sau đó lấy max.

main.cpp
Open in Github Download
#include <iostream>
using namespace std;

int a[100001];

int main() {
    a[0] = 0;
    a[1] = 1;
    // Tính mảng A
    for (int i=2; i<=100000; i++) {
        // i lẻ
        if (i & 1) a[i] = a[i>>1] + a[(i>>1)+1];
        // i chẵn
        else a[i] = a[i>>1];
    }

    for (int i=2; i<=100000; i++) {
        a[i] = max(a[i], a[i-1]);
    }

    int t; cin >> t;
    while (t--) {
        int n; cin >> n;
        cout << a[n] << '\n';
    }
    return 0;
}
Comments