Submission #889074

# Submission time Handle Problem Language Result Execution time Memory
889074 2023-12-18T18:43:30 Z shadow_sami Monkey and Apple-trees (IZhO12_apple) C++17
0 / 100
405 ms 262144 KB
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
typedef int ll;
typedef vector<ll> vi;
typedef vector<vector<ll>> vvi;
typedef pair<ll,ll> pi;
typedef map<ll,ll> mi;
typedef long double ld;
typedef vector<ld> vd;
typedef vector<vector<ld>> vvd;
typedef pair<ld,ld> pd;
#define ff first
#define ss second
#define srt(a) sort(a.begin(),a.end());
#define fip(k, n) for (ll i = k; i < n; i++)
#define fjp(k, n) for (ll j = k; j < n; j++)
#define fin(k, n) for (ll i = k; i >= n; i--)
#define fjn(k, n) for (ll j = k; j >= n; j--)
#define fp(k, n, m) for (ll k = n; k < m; k++)
#define fn(k, n, m) for (ll k = n; k >= m; k--)
#define ordered_set tree<pi, null_type,less< pi >, rb_tree_tag,tree_order_statistics_node_update>
#define totalOne(n) __builtin_popcount(n)
#define backZero(n) __builtin_ctzll(n)
#define frontZero(n) __builtin_clzll(n)
#define fx(k) for ( auto x : k )
#define test ll t;cin >> t;while (t--)
#define nli "\n"

// ==========================(debug)============================================================================================== //

#ifndef ONLINE_JUDGE
#define debug(x) cerr << #x <<" "; _printn(x); cerr << nli;
#else
#define debug(x)
#endif

void _printn(ll x){ cerr<<x<<" "; }
// void _printn(int x){ cerr<<x<<" "; }
void _printn(ld x){ cerr<<x<<" "; }
void _printn(double x){ cerr<<x<<" "; }
void _printn(string x){ cerr<<x<<" "; }
void _printn(char x){ cerr<<x<<" "; }
void _printn(bool x){ cerr<<x<<" "; }
template<class T,class V>void _printn(pair<T,V> vv);
template<class T> void _printn(vector<T> vv);
template<class T> void _printn(set<T> vv);
template<class T,class V> void _printn(map<T,V> vv);
template<class T> void _printn(multiset<T> vv);
template<class T,class V>void _printn(pair<T,V> vv){ cerr<<"( ";_printn(vv.ff);cerr<<",";_printn(vv.ss);cerr<<")";}
template<class T> void _printn(vector<T> vv){ cerr<<"[ "; for(auto xx:vv){ _printn(xx);cerr<<" "; } cerr<<"]"; };
template<class T> void _printn(set<T> vv){ cerr<<"{ "; for(auto xx:vv){ _printn(xx);cerr<<" "; } cerr<<"}"; };
template<class T> void _printn(multiset<T> vv){ cerr<<"{ "; for(auto xx:vv){ _printn(xx);cerr<<" "; } cerr<<"}"; };
template<class T,class V> void _printn(map<T,V> vv){ cerr<<"{ "; for(auto xx:vv){ _printn(xx);cerr<<" "; } cerr<<"}"; };

// ==========================(debug)============================================================================================== //

ll n,m,tp,tp2,res,cnt,sum,tptp,ans;
const ll mx = 5e5+5;
const ll mod = 1e9+7;

// ==========================(MOD)=============================================================================================== //

// ll mod_add(ll aa,ll bb){ return ((aa%mod)+(bb%mod))%mod; }
// ll mod_minus(ll aa,ll bb){ return (((aa%mod)-(bb%mod))+10*mod)%mod; }
// ll mod_mul(ll aa,ll bb){ return ((aa%mod)*(bb%mod))%mod; }
// ll mod_power(ll aa,ll bb){ aa%=mod; ll empowered = 1; bb%=mod-1; while(bb > 0){ if(bb & 1) empowered = mod_mul(empowered,aa); bb = bb >> 1; aa = mod_mul(aa,aa); } return empowered; }
// ll mod_divi(ll aa,ll bb){ aa=mod_mul(aa,mod_power(bb,mod-2)); return aa; }

// ==========================(MOD)=============================================================================================== //

bool f = false;
ll lim = 1e9;

typedef struct NODE{
	ll val = 0;
	ll laz = 0;
	ll l,r,mid;
	NODE *left = NULL,*right = NULL;
	NODE(ll x,ll y){
		l = x;
		r = y;
		mid = x + (y-x) / 2;
	}
	~NODE(){
		delete left;
		delete right;
	}
	void extend(){
		cnt++;
		if(!left)
			left = new NODE{l,mid};
		if(!right)
			right = new NODE{mid+1,r};
	}
	ll query(ll st,ll en){
		if(laz){
			val = (r-l) + 1;
			if(l!=r){
				extend();
				left->laz += laz;
				right->laz += laz;
			}
			laz = 0;
		}
		if(r<st || l>en)
			return 0;
		if(l>=st && r<=en)
			return val;
		extend();
		return (left->query(st,en) + right->query(st,en));
	}
	ll update(ll st,ll en){
		if(laz){
			val = (r-l) + 1;
			if(l!=r){
				extend();
				left->laz += laz;
				right->laz += laz;
			}
			laz = 0;
		}
		if(r<st || l>en)
			return val;
		if(l>=st && r<=en){
			if(val!=r-l+1)
				val = r-l+1;
			laz = 1;
			return val;
		}
		extend();
		// debug(left->l);
		// debug(left->r);
		// debug(right->l);
		// debug(right->r);
		val = (left->update(st,en) + right->update(st,en));
		// debug(l);
		// debug(r);
		return val;
	}
}node;

node sgt = NODE(1,lim);
int sr,de;

int main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    // #ifndef ONLINE_JUDGE
    //     freopen("input1.txt", "r", stdin);
    //     freopen("output1.txt", "w", stdout);
    //     freopen("error1.txt", "w", stderr);
    // #endif // ONLINE_JUDGE

    cnt = 0;
        cin>>m;
        tp = 0;
        while(m--){
        	cin>>tp2>>sr>>de;
        	if(tp2==1){
        		tp = sgt.query(sr+tp,de+tp);
        		cout<<tp<<nli;
        	}else{
        		sgt.update(sr+tp,de+tp);
        	}
        	// assert(cnt<=1e7);
        }
        // cout<<cnt<<nli;
        
    cerr << "Time elapsed: " << setprecision(6) << 1000.0 * clock() / CLOCKS_PER_SEC << "ms\n";
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 16 ms 8540 KB Output is correct
5 Correct 21 ms 10512 KB Output is correct
6 Correct 20 ms 10076 KB Output is correct
7 Correct 19 ms 10332 KB Output is correct
8 Correct 176 ms 77140 KB Output is correct
9 Correct 358 ms 130900 KB Output is correct
10 Correct 380 ms 146856 KB Output is correct
11 Correct 397 ms 159316 KB Output is correct
12 Correct 405 ms 164944 KB Output is correct
13 Correct 377 ms 205092 KB Output is correct
14 Correct 384 ms 207004 KB Output is correct
15 Runtime error 351 ms 262144 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -