/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 4ms 6.582 MiB
#2 Accepted 4ms 6.562 MiB
#3 Accepted 3ms 6.57 MiB
#4 Accepted 4ms 6.66 MiB
#5 Accepted 56ms 6.68 MiB
#6 Accepted 69ms 16.41 MiB
#7 Accepted 74ms 22.211 MiB
#8 Accepted 74ms 18.445 MiB
#9 Accepted 69ms 18.441 MiB
#10 Accepted 68ms 21.82 MiB
#11 Accepted 68ms 22.359 MiB
#12 Accepted 68ms 18.391 MiB
#13 Accepted 68ms 22.113 MiB
#14 Accepted 67ms 16.277 MiB
#15 Accepted 68ms 21.836 MiB
#16 Accepted 65ms 20.512 MiB

Code

#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define dbg(a,b,c,d) cerr<<a<<"  "<<b<<"  "<<c<<"  "<<d<<endl;
#define kill(a) {cout<<a<<endl;continue;}
#define KILL(a) {cout<<a<<endl;return 0;}
#define debug cerr<<"Error Found"<<endl;
#define mem(a,b) memset(a,b,sizeof(a))
#define lcm(a, b) (a/__gcd(a,b))*b
#define w(t) cin>>t;while(t--)
#define pi  2 * acos(0.0)
#define endl "\n"
int t, cs = 0;
const int mxn = 1e6 + 3, mod = 1e9 + 7;
int64_t dp[3][mxn];
int vis[3][mxn];
array<int, 3>ar[mxn];
int n;
int64_t rec(int idx, int cur)
{
    if(idx == n)return 0;
    if(vis[cur][idx] == cs)return dp[cur][idx];
    vis[cur][idx] = cs;
    int64_t ans = -1e18;
    for(int i = 0; i < 3; i++)
    {
        if(cur != i)ans = max(ans, ar[idx][i] + rec(idx + 1, i));
    }
    return dp[cur][idx] = ans;
}
int32_t main()
{
   fast;
    w(t)
    {

        cin >> n;
        cs++;
        for(int i = 0; i < n; i++)cin >> ar[i][0];
        for(int i = 0; i < n; i++)cin >> ar[i][1];
        for(int i = 0; i < n; i++)cin >> ar[i][2];
        int64_t ans = -1e18;
        for(int i = 0; i < 3; i++)ans = max(ans, ar[0][i] + rec(1, i));
        cout << ans << endl;
    }
}

Information

Submit By
Type
Submission
Problem
P1046 Maximum sum in 3-array
Language
C++17 (G++ 13.2.0)
Submit At
2024-11-07 07:23:26
Judged At
2024-11-11 02:23:33
Judged By
Score
100
Total Time
74ms
Peak Memory
22.359 MiB