APCS - 11106-4-3.cpp

本文最後更新於:2024年1月12日 下午

APCS - 11106-4-3.cpp

APCS-11106-4-3.cpp

// Author : ysh
// 06/14/2022 Tue  9:00:43.90
#include<bits/stdc++.h>
using namespace std;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int a,b;cin>>a>>b;
    vector<int>f(a),g(b);
    for(int &i : f) {
        cin>>i;
    }
    for(int &i : g) {
        cin>>i;
    }
    int sig = 0;
    int ans = INT_MIN;
    // for(int l = 0;l <= 1;l++) {
        // for(int i = 0;i<a;i++) {
            for(int j = 0;j<b;j++) {
                int pi = 0;
                sig = 0;
                for(int k = j;k<b;k++) {
                    // cout<<1;
                    if(sig < 0) sig = 0;
                    sig += f[pi++] * g[k];
                    // printf("%d %d\n",pi - 1,k);
                    ans = max(ans,sig);
                    if(pi >= a) {
                        pi = 0;
                        sig = 0;
                        continue;
                    }
                }
                sig = 0;
                for(int k = 0;k<j;k++) {
                    if(sig < 0) sig = 0;
                    sig += f[pi++] * g[k];
                    // printf("%d %d\n",pi - 1,k);
                    ans = max(ans,sig);
                    if(pi >= a) {
                        pi = 0;
                        sig = 0;
                        continue;
                    }
                }
            }
        // }
        // reverse(g.begin(),g.end());
    // }

            for(int j = 0;j<b;j++) {
                int pi = 0;
                sig = 0;
                for(int k = j;k >= 0;k--) {
                    // printf("%d %d\n",pi,k);
                    // cout<<1;
                    if(sig < 0) sig = 0;
                    sig += f[pi++] * g[k];
                    // printf("%d %d\n",pi - 1,k);
                    ans = max(ans,sig);
                    if(pi >= a) {
                        pi = 0;
                        sig = 0;
                        continue;
                    }
                }
                sig = 0;
                for(int k = b - 1;k>j;k--) {
                    // printf("%d %d\n",pi,k);
                    if(sig < 0) sig = 0;
                    sig += f[pi++] * g[k];
                    // printf("%d %d\n",pi - 1,k);
                    ans = max(ans,sig);
                    if(pi >= a) {
                        pi = 0;
                        sig = 0;
                        continue;
                    }
                }
            }
    cout<<ans;
    return 0;
}

APCS - 11106-4-3.cpp
http://mysh212.github.io/algosolution/APCS-11106-4-3.cpp/
作者
ysh
發布於
2022年6月14日
更新於
2024年1月12日
許可協議