Submission details
Task:DNA sequence
Sender:team_a
Submission time:2020-10-03 14:27:49 +0300
Language:C++ (C++11)
Status:READY
Result:
Test results
testverdicttime
#10.01 sdetails

Code

#include <iostream>

using namespace std;


void inc(int *v, int a, int b, int x) {
    int i = a - 1;

    while((b - i) % 4) {
        v[i] += x;
        i++;
    }

    for (; i < b; i += 4)  {
        v[i] += x;
        v[i + 1] += x;
        v[i + 2] += x;
        v[i + 3] += x;
    }
}

void set(int *v, int a, int b, int x) {
    int i = a - 1;

    while((b - i) % 4) {
        v[i] = x;
        i++;
    }

    for (; i < b; i += 4)  {
        v[i] = x;
        v[i + 1] = x;
        v[i + 2] = x;
        v[i + 3] = x;
    }
}

void sum(int *v) {
    int a, b;
    cin >> a >> b;
    int i = a - 1;
    long int t0 = 0;
    long int t1 = 0;
    long int t2 = 0;
    long int t3 = 0;

    while((b - i) % 4) {
        t0 += v[i];
        i++;
    }

    for (; i < b; i += 4)  {
        t0 += v[i + 0];
        t1 += v[i + 1];
        t2 += v[i + 2];
        t3 += v[i + 3];
    }
    cout << (t0 + t1 + t2 + t3) << endl;
}

int main() {
    std::ios::sync_with_stdio(true);

    int n;
    cin >> n;

    int *v = new int[n]; // Values
    for (int i = 0; i < n; i++) cin >> v[i];

    int q;
    cin >> q;
    int *qs = new int[4*q]; // Values
    int j = 0;

    for(int i = 0; i < q; i++) {
        int o;
        cin >> o;
        if (o == 3) {
            for (int qi = j; qi < i; qi++) {
                int a = qs[4*qi + 1];
                int b = qs[4*qi + 2];
                int x = qs[4*qi + 3];
                if (qs[4*qi] == 1)
                    inc(v, a, b, x);
                else
                    set(v, a, b, x);
            } 
            j = i + 1;
            sum(v);
        } else {
            qs[4*i + 0] = o;
            cin >> qs[4*i + 1];
            cin >> qs[4*i + 2];
            cin >> qs[4*i + 3];
        }
    }


    
    return 0;
}

Test details

Test 1

Verdict:

input
ACGCGGGCTCCTAGCGTTAGCAGTTGAGTG...

correct output
YES
YES
NO
NO
YES
...

user output
(empty)