本地运行正常云端编译错误
查看原帖
本地运行正常云端编译错误
779221
seanxlx楼主2024/7/11 21:06

报错:Nothing is compiled: OUTPUT exceeds.

#include<bits/stdc++.h>
using namespace std;
long long n, m, q;
struct Node {
	long long left = 0;
	long long right = 0;
	long long num = 0;
    long long add = 0;
    long long mul = 1;
};
Node tree[1000010];
long long a[100010];
void build(int left, int right, int id)
{
	int mid = (left + right) / 2;
	tree[id].left = left;
	tree[id].right = right;
    tree[id].add = 0;
	if(left == right)
    {
        tree[id].num = a[left] % m;
        return;
    }
	build(left, mid, id * 2);
	build(mid + 1, right, id * 2 + 1);
    tree[id].num = tree[id * 2].num + tree[id * 2 + 1].num;
    tree[id].num %= m;
}
void pushdown(int id)
{
    if(tree[id].add > 0)
    {
        tree[id * 2].num = tree[id * 2].num * tree[id].mul + (tree[id * 2].right - tree[id * 2].left + 1) * tree[id].add;
        tree[id * 2].num %= m;
        tree[id * 2 + 1].num = tree[id * 2 + 1].num * tree[id].mul + (tree[id * 2 + 1].right - tree[id * 2 + 1].left + 1) * tree[id].add;
        tree[id * 2 + 1].num %= m;
        tree[id * 2].mul *= tree[id].mul;
        tree[id * 2 + 1].mul *= tree[id].mul;
        tree[id * 2].add += tree[id].add;
        tree[id * 2 + 1].add += tree[id].add;
        tree[id].add = 0;
        tree[id].mul = 0;
    }
}
void edit(int id, int left, int right, long long add, long long mul)
{
    if(left <= tree[id].left && tree[id].right <= right)
    {
        tree[id].add += add;
        tree[id].mul *= mul;
        tree[id].num = tree[id].num * mul + (tree[id].right - tree[id].left + 1) * add;
        return;
    }
    pushdown(id);
	if(left <= tree[id * 2].right) edit(id * 2, left, right, add, mul);
	if(right >= tree[id * 2 + 1].left) edit(id * 2 + 1, left, right, add, mul);
    tree[id].num = tree[id * 2].num + tree[id * 2 + 1].num;
}
long long sum(int left, int right, int id)
{
	if(tree[id].left >= left && tree[id].right <= right)
	{
		return tree[id].num % m;
	}
	else
	{
        pushdown(id);
		long long s = 0;
		if(left <= tree[id * 2].right)
        {
            s += sum(left, right, id * 2);
        }
        s %= m;
		if(right >= tree[id * 2 + 1].left)
        {
            s += sum(left, right, id * 2 + 1);
        }
		return s %= m;
	}
}
int main()
{
	cin >> n >> q >> m;
    for(int i = 1;i <= n;i++)
    {
        cin >> a[i];
    }
	build(1, n, 1);
	for(int i = 0;i < q;i++)
	{
		int op;
		cin >> op;
		if(op == 2)
		{
			long long x, y, k;
			cin >> x >> y >> k;
			edit(1, x, y, k, 1);
		}
        else if(op == 1)
        {
            long long x, y, k;
            cin >> x >> y >> k;
            edit(1, x, y, 0, k);
        }
		else
		{
			int x, y;
			cin >> x >> y;
			cout << sum(x, y, 1) % m << endl;
		}
	}
	return 0;
}

2024/7/11 21:06
加载中...