Submission #1030544

#TimeUsernameProblemLanguageResultExecution timeMemory
1030544GrayMonkey and Apple-trees (IZhO12_apple)C++17
0 / 100
324 ms262144 KiB
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <ios>
#include <iostream>
#include <map>
#include <ratio>
#include <set>
#include <string>
#include <vector>
#define ll long long
#define ull unsigned long long int
#define ld double
#define ln "\n"
#define ff first
#define ss second
using namespace std;

const ll inf=2e18;

void setio(string io=""){
	#ifndef LOCAL
	if (io.length()){
		freopen((io+".in").c_str(), "r", stdin);
		freopen((io+".out").c_str(), "w", stdout);
		return;
	}
	#endif
	ios_base::sync_with_stdio(0); cin.tie(nullptr);
}

struct Node{
	Node *left, *right;
	ll val, lazy;
	Node(){
		left=right=nullptr;
		val=0; lazy=-1;
	}
	void preprocess(ll tl, ll tr){
		if (lazy!=-1){
			val=tr-tl+1;
			lazy=-1;
			if (!left) left=new Node;
			left->lazy=1;
			if (!right) right=new Node;
			right->lazy=1;
		}
	}
	void update(ll tl, ll tr, ll l, ll r){
		preprocess(tl, tr);
		if (tl==l and tr==r){
			lazy=1;
			preprocess(tl, tr);			
		}else if (l>r) return;
		else{
			ll tm = (tl+tr)/2;
			if (!left) left=new Node;
			left->update(tl, tm, l, min(r, tm));
			if (!right) right=new Node;
			right->update(tm+1, tr, max(tm+1, l), r);
			val=left->val+right->val;
		}
	}
	ll query(ll l, ll r, ll tl, ll tr){
		preprocess(tl, tr);
		if (l==tl and r==tr){
			return val;
		}else if (l>r) return 0;
		else{
			ll tm = (tl+tr)/2;
			ll ans=0;
			if (left) ans+=left->query(l, min(r, tm), tl, tm);
			if (right) ans+=right->query(max(l, tm+1), r, tm+1, tr);
			return ans;
		}
	}
};

void solve(){
	Node tr;
	ll l=1, r=1e9;
	ll q; cin >> q;
	ll c=0;
	while (q--){
		ll t, x, y; cin >> t >> x >> y;
		if (t==1){
			c = tr.query(x+c, y+c, l, r);
			cout << c << ln;
		}else{
			tr.update(l, r, x+c, y+c);
		}
	}
}

int main(){
	setio();
	ll t=1;
	// cin >> t;
	while (t--) solve();
}
 

Compilation message (stderr)

apple.cpp: In function 'void setio(std::string)':
apple.cpp:25:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |   freopen((io+".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:26:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |   freopen((io+".out").c_str(), "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...