类似滑动窗口的思路,统计每个窗口内的比值,记录下比值最大的窗口的起始位置。
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    getline(cin, s, '\n');
    int N = 0;
    cin >> N;
    int first = 0;
    int last = first + N - 1;
    int ratio = 0;
    int flag = 0;
    int size = 0;
    while (last <= s.size() - 1) {
        string temp = s.substr(first, N);
        for (int i = 0; i < N; i++) {
            if (temp[i] == 'G' || temp[i] == 'C') {
                size++;
            }
        }
        if (size > ratio) {
            ratio = size;
            flag = first;
        }
        first++;
        last = first + N - 1;
        size = 0;
    }
    string res = s.substr(flag, N);
    cout << res << endl;
    return 0;
}