Submission #165582

# Submission time Handle Problem Language Result Execution time Memory
165582 2019-11-27T13:40:32 Z shashwatchandra Weighting stones (IZhO11_stones) C++17
100 / 100
77 ms 7672 KB
/*input
5
1 2
3 1
2 1
4 2
5 1
*/
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;

#define int long long 
#define double long double
#define f first
#define s second
#define mp make_pair
#define pb push_back

#define RE(i,n) for (int i = 1; i <= n; i++)
#define RED(i,n) for (int i = n; i > 0; i--)
#define REPS(i,n) for(int i = 1; (i*i) <= n; i++)
#define REP(i,n) for (int i = 0; i < (int)n; i++)
#define FOR(i,a,b) for (int i = a; i < b; i++)
#define REPD(i,n) for (int i = n-1; i >= 0; i--)
#define FORD(i,a,b) for (int i = a; i >= b; i--)

#define all(v) v.begin(),v.end()
#define pii pair<int,int>
#define vi vector<int>
#define vvi vector<vi>
#define print(arr) for (auto it = arr.begin(); it != arr.end(); ++it) cout << *it << " "; cout << endl;
#define debug(x) cout << x << endl;
#define debug2(x,y) cout << x << " " << y << endl;
#define debug3(x,y,z) cout << x << " " << y << " " << z << endl;

typedef tree<
int,
null_type,
less<int>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;

const int INF = 1e18+1;
const int MOD = 1e9+7;
const double PI = 3.14159265358979323846264338;

int raise(int a,int n,int m = MOD){
  if(n == 0)return 1;
  if(n == 1)return a;
  int x = 1;
    x *= raise(a,n/2,m);
    x %= m;
    x *= x;
    x %= m;
    if(n%2)x*= a;
    x %= m;
    return x;
}

int floor1(int n,int k){
    if(n%k == 0 || n >= 0)return n/k;
    return (n/k)-1;
}

int ceil1(int n,int k){
    return floor1(n+k-1,k);
}

const int N = 1e5+1;
int lazy[4*N];
int segs[4*N];
int segl[4*N];
int n;

#define mid (l+r)/2
#define child 2*node

inline void pushdown(int node,int l,int r){
	segs[node] += lazy[node];
	segl[node] += lazy[node];
	if(l != r){
		lazy[child] += lazy[node];
		lazy[child+1] += lazy[node];
	}
	lazy[node] = 0;
	return;
}

void upd(int node,int l,int r,int start,int end,int val){
	pushdown(node,l,r);
	if(l > end or start > r)return;
	if(start <= l and r <= end){
		lazy[node] += val;
		pushdown(node,l,r);
		return;
	}
	upd(child,l,mid,start,end,val);
	upd(child+1,mid+1,r,start,end,val);
	segs[node] = min(segs[child],segs[child+1]);
	segl[node] = max(segl[child],segl[child+1]);
}

void solve(){
  	cin >> n;
  	RE(i,n){
  		int val,side;cin >> val >> side;
  		val = n-val+1;
  		if(side == 1){
  			upd(1,1,n,val,n,1);
  		}
  		else{
  			upd(1,1,n,val,n,-1);
  		}
  		pushdown(1,1,n);
  		int one = segs[1];
  		int two = segl[1];
  		//cout << one << " " << two << endl;
  		if(one < 0 and two > 0)cout << "?\n";
  		else if(two <= 0)cout << "<\n";
  		else cout << ">\n";
  	}
}

signed main(){
  ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  //freopen(".in","r",stdin);freopen(".out","w",stdout);
  int t = 1;
  //cin >> t;
  while(t--){
    solve();
  }
  return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 504 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 3 ms 376 KB Output is correct
4 Correct 3 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 3 ms 376 KB Output is correct
8 Correct 3 ms 632 KB Output is correct
9 Correct 3 ms 504 KB Output is correct
10 Correct 7 ms 1144 KB Output is correct
11 Correct 43 ms 3960 KB Output is correct
12 Correct 69 ms 7544 KB Output is correct
13 Correct 70 ms 7528 KB Output is correct
14 Correct 77 ms 7544 KB Output is correct
15 Correct 64 ms 7544 KB Output is correct
16 Correct 63 ms 7544 KB Output is correct
17 Correct 62 ms 7548 KB Output is correct
18 Correct 63 ms 7496 KB Output is correct
19 Correct 76 ms 7616 KB Output is correct
20 Correct 68 ms 7672 KB Output is correct
21 Correct 62 ms 7544 KB Output is correct
22 Correct 64 ms 7516 KB Output is correct
23 Correct 62 ms 7544 KB Output is correct
24 Correct 62 ms 7544 KB Output is correct
25 Correct 66 ms 7616 KB Output is correct