제출 #1325771

#제출 시각아이디문제언어결과실행 시간메모리
1325771vtnoo돌 무게 재기 (IZhO11_stones)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); i++)
#define R(i, j, k) for(int i = (j); i >= (k); i--)
#define all(x) x.begin(), x.end()
#define sz(a) ((int) a.size())
#define pb emplace_back
#define fst first
#define snd second
using namespace std;
typedef long long ll;
const int INF=1e9,MAXN=1e5+5;
void chmin(int &a,int b){a=min(a,b);}
struct Node{
	int mn,mx,lz;
};
int n;
Node st[MAXN*4];
Node op(Node &a,Node &b){
	Node c;
	c.mn=min(a.mn,b.mn);
	c.mx=max(a.mx,b.mx);
	return c;
}	
void pass(int v){
	st[v*2].mx+=st[v].lz;
	st[v*2].mn+=st[v].lz;
	st[v*2+1].mx+=st[v].lz;
	st[v*2+1].mn+=st[v].lz;
	st[v].lz=0;
}
void upd(int ts,int te,int x,int v=1,int s=0,int e=n-1){
	if(e<ts||s>te)return;
	if(ts<=s&&e<=te){
		st[v].mn+=x;
		st[v].mx+=x;
		st[v].lz+=x;
		return;
	}else{
		pass(v);
		int m=(s+e)/2;
		upd(ts,te,x,v*2,s,m);
		upd(ts,te,x,v*2+1,m+1,e);
		st[v]=op(st[v*2],st[v*2+1]);
	}
}
int main(){
	ios::sync_with_stdio(false); 
	cin.tie(nullptr);
	cin>>n;
	L(i,0,n-1){
		int r,s;cin>>r>>s;
		s--;
		int x=s?-1:1;
		upd(0,r-1,x);
		if(st[1].mn>=0){
			cout<<">"<<endl;
		}else if(st[1].mx<=0){
			cout<<"<"<<endl;
		}else cout<<"?"<<endl;
	}
}

#Verdict Execution timeMemoryGrader output
Fetching results...