100分求助
查看原帖
100分求助
682394
Moon_Traveller楼主2023/1/25 23:29

记录

#include <iostream>
using namespace std;
#define int long long

int n, p;
int nums[1000006];
int maxnums[1000006];
int feature[1000006];
int score[1000006];
bool flag;
int ans;

signed main()
{
    cin >> n >> p;
    for(int i = 1; i <= n; i++)
    {
        cin >> nums[i];
        maxnums[i] = max(nums[i], maxnums[i - 1] + nums[i]);
    }
    feature[1] = maxnums[1];
    for(int i = 2; i <= n; i++)
    {
        feature[i] = max(feature[i - 1], maxnums[i]);
    }
    score[1] = feature[1];
    ans = score[1];
    score[2] = score[1] + feature[1];
    if(score[2] > score[1])
    {
        ans = score[2];
        flag = true;
    }
    for(int i = 3; i <= n; i++)
    {
        if(feature[i - 1] > 0)
        {
            score[i] = score[i - 1] + feature[i - 1];
        }
        else
        {
            score[i] = score[2];
            continue;
        }
        if(score[i] > score[1])
        {
            flag = true;
        }
        if(flag)
        {
            score[i] %= p;
        }
        ans = score[i];
    }
    if(flag)
    {
        cout << ans << endl;
    }
    else
    {
        cout << score[1] << endl;
    }
    return 0;
}
2023/1/25 23:29
加载中...