Submission #426750

# Submission time Handle Problem Language Result Execution time Memory
426750 2021-06-14T09:33:08 Z jeqcho Monkey and Apple-trees (IZhO12_apple) C++17
0 / 100
1 ms 204 KB
#include <bits/stdc++.h>
using namespace std;

typedef long double ld;
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<pair<int,int>> vpi;

#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define trav(a,x) for (auto& a: x)

#define pb push_back
#define rsz resize
#define sz(x) int(x.size())
#define all(x) begin(x), end(x)
#define fi first
#define se second

template <class T>
struct node
{
	int lx,rx;
	T val=0;
	bool lazy=0;
	node<T>*lefchi=nullptr,*rigchi=nullptr;
	
	T comb(T a,T b){return a+b;}
	void extend()
	{
		if(!lefchi && rx-lx!=1)
		{
			int md=(lx+rx)/2;
			lefchi=new node<int>({lx,md});
			rigchi=new node<int>({md,rx});
		}
	}
	void push()
	{
		if(!lazy)return;
		val=rx-lx;
		lazy=0;
		if(rx-lx==1)return;
		extend();
		lefchi->lazy = 1;
		rigchi->lazy = 1;
	}
	
	T query(int lq,int rq)
	{
		if(lq>=rx || rq<=lx)return 0;
		push();
		if(lq<=lx && rq>=rx)return val;
		extend();
		T lef = lefchi->query(lq,rq);
		T rig = rigchi->query(lq,rq);
		return comb(lef,rig);
	}
	void update(int lq,int rq,T v)
	{
		push();
		if(lq>=rx || rq<=lx)return;
		extend();
		if(lq<=lx && rq>=rx)
		{
			lazy=v;
			push();
			return;
		}
		lefchi->update(lq,rq,v);
		rigchi->update(lq,rq,v);
		val = comb(lefchi->val,rigchi->val);
	}
};

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	int m;
	cin>>m;
	int c=0;
	node<int>seg({0,(int)1e9+3});
	while(m--)
	{
		int d,x,y;
		cin>>d>>x>>y;
		if(d==1)
		{
			c=seg.query(c+x,1<<30);
			cout<<c<<'\n';
		}
		else
		{
			seg.update(c+x,c+y+1,1);
		}
	}
	return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -