QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#532926#1060. 快速查询vorDeal0 74ms4832kbC++201.9kb2024-08-25 14:39:052024-08-25 14:39:05

Judging History

This is the latest submission verdict.

  • [2024-08-25 14:39:05]
  • Judged
  • Verdict: 0
  • Time: 74ms
  • Memory: 4832kb
  • [2024-08-25 14:39:05]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

const int p = 1e7 + 19;
int n, q, t, sum, ans, stv, add, mul;
int a[105], b[105], op[100005], sub[100005], val[100005];
map<int, int> mdf;

int inv(int x)
{
    int res = 1;
    for (int i = p - 2; i > 0; x = 1ll * x * x % p, i >>= 1)
        if (i & 1)
            res = 1ll * res * x % p;
    return res % p;
}

void solve(int i)
{
    if (op[i] == 1)
    {
        sum -= 1ll * (mdf.count(sub[i]) ? mdf[sub[i]] : stv) * mul % p;
        sum += val[i] - add, sum %= p;
        mdf[sub[i]] = 1ll * ((val[i] - add) % p + p) % p * inv(mul) % p;
    }
    else if (op[i] == 2)
    {
        add += val[i], add %= p;
        sum += 1ll * val[i] * n % p, sum %= p;
    }
    else if (op[i] == 3 && val[i] == 0)
        sum = stv = add = 0, mdf.clear(), mul = 1;
    else if (op[i] == 3 && val[i] == 1)
    {
        mul = 1ll * mul * val[i] % p;
        add = 1ll * add * val[i] % p;
        sum = 1ll * sum * val[i] % p;
    }
    else if (op[i] == 4)
    {
        add = 0, mul = 1, mdf.clear();
        stv = val[i], sum = 1ll * val[i] * n % p;
    }
    else if (op[i] == 5)
        ans += 1ll * (mdf.count(sub[i]) ? mdf[sub[i]] : stv) * mul % p + add, ans %= p;
    else if (op[i] == 6)
        ans += sum, ans %= p;
    return;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin >> n >> q;
    for (int i = 1; i <= q; i++)
    {
        cin >> op[i];
        if (op[i] == 1 || op[i] == 5)
            cin >> sub[i];
        if (op[i] <= 4)
            cin >> val[i], val[i] = (val[i] % p + p) % p;
    }
    cin >> t;
    for (int i = 1; i <= t; i++)
        cin >> a[i] >> b[i];
    for (int i = 1; i <= t; i++)
        for (int j = 1; j <= q; j++)
            solve((a[i] + 1ll * j * b[i]) % q + 1);
    cout << (ans + p) % p;
    return 0;
}

詳細信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 74ms
memory: 4832kb

input:

452026
95958
1 285703 217433997
1 11660 355946119
1 154677 958212086
1 45777 559001183
1 149425 708949937
1 199039 -627813211
1 421465 878181683
1 18566 -840518154
1 268546 -956473636
1 6627 -168874651
1 165349 796846652
1 389787 -241387034
2 856579071
2 776291767
1 361873 220652502
1 34945 3586417
...

output:

6063486

result:

wrong answer 1st lines differ - expected: '7032812', found: '6063486'

Subtask #2:

score: 0
Skipped

Dependency #1:

0%