样例全过60分求助
查看原帖
样例全过60分求助
564225
dontwannacry楼主2022/4/30 12:10
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long a[300010],l[300010] = {0},mt,k;
bool b[300010] = {0};
int re[1000010] = {0},result[1000010] = {0};
int main(){
    scanf("%d%d%lld",&n,&m,&k);
    for(int i = 1;i <= m;++i){
        int num;
        scanf("%d",&num);
        b[num] = 1;
    }
    for(int i = 1;i <= n;++i){
        scanf("%lld",&a[i]);
        l[i] = a[i] + l[i - 1];
        if(b[i] && a[i])++re[l[i] % k];
    }
    int mt = re[0];
    for(int i = n;i >= 1;--i){
        if(b[i] && a[i]){
            --re[l[i] % k];
        }
        int ti = re[0] + result[l[i] % k];
        mt = max(mt,ti);
        if(b[i] && a[i]){
            ++result[l[i] % k];
        }
    }
    cout << mt;
    return 0;
}
2022/4/30 12:10
加载中...