/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 9ms 532.0 KiB
#3 Accepted 16ms 532.0 KiB
#4 Accepted 14ms 532.0 KiB
#5 Accepted 16ms 800.0 KiB
#6 Accepted 17ms 2.77 MiB
#7 Accepted 18ms 5.113 MiB
#8 Accepted 17ms 5.02 MiB
#9 Accepted 6ms 532.0 KiB

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
#define ff first
#define ss second
#define pb push_back
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define f(i,x,y) for(int i=x;i<y;i++)
#define f2(i,x,y) for(int i=x;i>=y;i--)
#define pii pair<int,int>
#define Fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
const int MOD =1000000007;
const int INF = 1e18;
const int N = 2e5;
 
void solve(int tc){
    int n,k,d; cin >> n >> k >> d;
    vector<int>v(n+1),pref(n+1),val(n+1);
    for(int i=1;i<=n;i++){
        cin >> v[i];
        pref[i] += pref[i-1] + v[i];
    }
    for(int i=1;i+k-1<=n;i++){
        int sum = pref[i+k-1] - pref[i-1];
        if(sum % d == 0)
            val[i] = 1;

    }
    int pr = -1;
    for(int i=1;i+k-1<=n;i++){
        int sum = pref[i+k-1] - pref[i-1];
        int prd = (sum < k ? 0 : 1);
        if(val[i] == 1 and prd > pr)
            pr = prd;
    }
    int ans = n + 1;
    for(int i=1;i<=n;i++){
        int sum = pref[i+k-1] - pref[i-1];
        int prd = (sum < k ? 0 : 1);
        if(val[i] == 1 and prd == pr)
            ans = min(ans , i);
    }
    cout << (ans==n+1 ? -1 : ans) << endl;
}
int32_t main(){

    Fast

    int t=1;

    cin >> t;

    for(int tc=1;tc<=t;tc++){

        solve(tc);
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1190 Segment Strength
Language
C++17 (G++ 13.2.0)
Submit At
2025-04-07 23:11:52
Judged At
2025-04-07 23:11:52
Judged By
Score
100
Total Time
18ms
Peak Memory
5.113 MiB