| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 959643 | maxFedorchuk | Monkey and Apple-trees (IZhO12_apple) | C++17 | 34 ms | 868 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#pragma GCC target("avx2,sse4,popcnt,bmi")
#pragma GCC optimize("Ofast,unroll-loops")
struct ver
{
	int l;
	int r;
	int cnt;
	int rd;
	int lson;
	int rson;
};
vector < ver > mas;
void upd(int in,int l,int r)
{
	ver zar=mas[in];
	if((zar.r<l || r<zar.l) || zar.rd)
	{
		return;
	}
	if(l<=zar.l && zar.r<=r)
	{
		mas[in].cnt=(zar.r-zar.l+1);
		mas[in].rd=1;
		return;
	}
	if(!zar.lson)
	{
		int mid=(zar.l+zar.r)/2;
		mas[in].lson=zar.lson=mas.size();
		mas.push_back({zar.l,mid,0,0,0,0});
		mas[in].rson=zar.rson=mas.size();
		mas.push_back({mid+1,zar.r,0,0,0,0});
	}
	upd(zar.lson,l,r);
	upd(zar.rson,l,r);
	mas[in].cnt=zar.cnt=mas[zar.lson].cnt+mas[zar.rson].cnt;
	mas[in].rd=zar.rd=(zar.cnt==(zar.r-zar.l+1));
}
int fget(int in,int l,int r)
{
	ver zar=mas[in];
	
	if((zar.r<l || r<zar.l))
	{
		return 0;
	}
	if(zar.cnt==0 || zar.rd)
	{
		return ((min(zar.r,r)-max(zar.l,l)+1)*zar.rd);
	}
	return (fget(zar.lson,l,r)+fget(zar.rson,l,r));
}
int main()
{
	cin.tie(0);
	ios_base::sync_with_stdio(0);
	mas.push_back({1,int(1e9),0,0,0,0});
	int n,munans=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int zp,l,r;
		cin>>zp>>l>>r;
		l+=munans;
		r+=munans;
		if(zp==1)
		{
			munans=fget(0,l,r);
			cout<<munans<<"\n";
		}
		else
		{
			upd(0,l,r);
		}
	}
	return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
