Odd or Even

 avatar
ishan
c_cpp
3 months ago
1.3 kB
3
Indexable
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define endl '\n'

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);


    int test_case;
    cin >> test_case;
    while (test_case--)
    {
        int n , q;
        cin >> n >> q;

        vector < int > v(n) ;

        for(auto &i : v)
        {
            cin >> i ;
        }

        int initial = 0 ;
        int sum = accumulate(v.begin() , v.end() , initial) ;

        vector < int > prefix_sum ;
        int presum = 0 ;

        for(int i = 0 ; i < n ; i ++)
        {
            presum += v[i] ;
            prefix_sum.emplace_back(presum) ;
        }

        for(int i = 0 ; i < q ; i ++)
        {
            int l , r , k ;
            cin >> l >> r >> k ;
            
            int add = k * (r-l+1) , temp ;

            if(l == 1)
            {
                temp = prefix_sum[r-1] ;
            }
            else
            {
                temp = prefix_sum[r-1] - prefix_sum[l-2] ;
            }

            if((sum - temp + add) % 2 == 1)
            {
                cout << "YES" ;
            }
            else
            {
                cout << "NO" ;
            }
            cout << endl ;
        }
    }
}
Editor is loading...
Leave a Comment