Submission #678624

# Submission time Handle Problem Language Result Execution time Memory
678624 2023-01-06T08:55:04 Z guagua0407 Railway Trip 2 (JOI22_ho_t4) C++17
Compilation error
0 ms 0 KB
    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pii pair<int,int>
    #define f first
    #define s second
    #define all(x) x.begin(),x.end() 
    #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
     
     
    struct node{
    	int mx=-1, mn=1e5+5;
    	int stmx=-1,stmn=1e5+5;
    };
     
    const int mxn=1e5+5;
    pair<int,int> jump[17][mxn];
    int n,k,m;
    node segtree[17][mxn];
     
    void push(int id,int v){
    	segtree[id][v*2].mn=min(segtree[id][v*2].mn,segtree[id][v].stmn);
    	segtree[id][v*2+1].mn=min(segtree[id][v*2+1].mn,segtree[id][v].stmn);
    	segtree[id][v*2].mx=max(segtree[id][v*2].mx,segtree[id][v].stmx);
    	segtree[id][v*2+1].mx=max(segtree[id][v*2+1].mx,segtree[id][v].stmx);
    	segtree[id][v*2].stmn=min(segtree[id][v*2].stmn,segtree[id][v].stmn);
    	segtree[id][v*2+1].stmn=min(segtree[id][v*2+1].stmn,segtree[id][v].stmn);
    	segtree[id][v*2].stmx=max(segtree[id][v*2].stmx,segtree[id][v].stmx);
    	segtree[id][v*2+1].stmx=max(segtree[id][v*2+1].stmx,segtree[id][v].stmx);
    	segtree[id][v].stmn=1e5+5;
    	segtree[id][v].stmx=-1;
    }
     
    void init(int id,int l=1,int r=n,int v=1){
    	segtree[id][v].mn=l,segtree[id][v].mx=r;
    	if(l==r){
    		return;
    	}
    	int mid=(l+r)/2;
    	init(id,l,mid,v*2);
    	init(id,mid+1,r,v*2+1);
    }
     
    void update1(int id,int tl,int tr,int val,int l=1,int r=n,int v=1){
    	if(tl>tr){
    		return;
    	}
    	if(tl<=l and r<=tr){
    		segtree[id][v].stmx=max(segtree[id][v].stmx,val);
    		segtree[id][v].mx=max(segtree[id][v].mx,val);
    		return;
    	}
    	push(id,v);
    	int mid=(l+r)/2;
    	update1(id,tl,min(mid,tr),val,l,mid,v*2);
    	update1(id,max(mid+1,tl),tr,val,mid+1,r,v*2+1);
    	segtree[id][v].mx=max(segtree[id][v*2].mx,segtree[id][v*2+1].mx);
    	segtree[id][v].mn=min(segtree[id][v*2].mn,segtree[id][v*2+1].mn);
    }
     
    void update2(int id,int tl,int tr,int val,int l=1,int r=n,int v=1){
    	if(tl>tr){
    		return;
    	}
    	if(tl<=l and r<=tr){
    		segtree[id][v].stmn=min(segtree[id][v].stmn,val);
    		segtree[id][v].mn=min(segtree[id][v].mn,val);
    		return;
    	}
    	push(id,v);
    	int mid=(l+r)/2;
    	update2(id,tl,min(mid,tr),val,l,mid,v*2);
    	update2(id,max(mid+1,tl),tr,val,mid+1,r,v*2+1);
    	segtree[id][v].mn=min(segtree[id][v*2].mn,segtree[id][v*2+1].mn);
    	segtree[id][v].mx=max(segtree[id][v*2].mx,segtree[id][v*2+1].mx);
    }
     
    pair<int,int> query(int id,int tl,int tr,int l=1,int r=n,int v=1){
    	if(tl>tr){
    		return {n+1,-1};
    	}
    	if(tl<=l and r<=tr){
    		return {segtree[id][v].mn,segtree[id][v].mx};
    	}
    	push(id,v);
    	int mid=(l+r)/2;
    	pair<int,int> x=query(id,tl,min(mid,tr),l,mid,v*2);
    	pair<int,int> y=query(id,max(mid+1,tl),tr,mid+1,r,v*2+1);
    	return {min(x.f,y.f),max(x.s,y.s)};
    }
     
    bool ok(int a,int b,int k){
    	pair<int,int> cur={a,a};
    	for(int i=0;i<17;i++){
    		if(k&(1<<i)){
    			cur=query(i,cur.f,cur.s);
    		}
    	}
    	return (cur.f<=b and b<=cur.s);
    }
     
    int main() {_
    	cin>>n>>k;
    	cin>>m;
    	for(int i=0;i<17;i++){
    		init(i);
    	}
    	for(int i=0;i<m;i++){
    		int a,b;
    		cin>>a>>b;
    		if(a<b){
    			int tmp=min(a+k-1,b);
    			update1(0,a,tmp,b);
    		}
    		else{
    			int tmp=max(a-k+1,b);
    			update2(0,tmp,a,b);
    		}
    	}
    	for(int i=1;i<17;i++){
    		for(int j=1;j<=n;j++){
    			update1(i,j,j,query(i-1,query(i-1,j,j).f,query(i-1,j,j).s).s);
    			update2(i,j,j,query(i-1,query(i-1,j,j).f,query(i-1,j,j).s).f);
    		}
    	}
    	int q;
    	cin>>q;
    	for(int i=0;i<q;i++){
    		int a,b;
    		cin>>a>>b;
    		//binary search ans
    		int l=0,r=n+1;
    		while(l<r){
    			int mid=(l+r)/2;
    			if(ok(a,b,mid)){
    				r=mid;
    			}
    			else{
    				l=mid+1;
    			}
    		}
    		cout<<(l==n+1?-1:l)<<'\n';
    	}
        return 0;
    }
    //maybe its multiset not set

Compilation message

Main.cpp:9:5: error: extended character   is not valid in an identifier
    9 |      
      |     ^
Main.cpp:10:5: error: extended character   is not valid in an identifier
   10 |      
      |     ^
Main.cpp:15:5: error: extended character   is not valid in an identifier
   15 |      
      |     ^
Main.cpp:20:5: error: extended character   is not valid in an identifier
   20 |      
      |     ^
Main.cpp:33:5: error: extended character   is not valid in an identifier
   33 |      
      |     ^
Main.cpp:43:5: error: extended character   is not valid in an identifier
   43 |      
      |     ^
Main.cpp:60:5: error: extended character   is not valid in an identifier
   60 |      
      |     ^
Main.cpp:77:5: error: extended character   is not valid in an identifier
   77 |      
      |     ^
Main.cpp:91:5: error: extended character   is not valid in an identifier
   91 |      
      |     ^
Main.cpp:101:5: error: extended character   is not valid in an identifier
  101 |      
      |     ^
Main.cpp:9:5: error: '\U000000a0' does not name a type
    9 |      
      |     ^
Main.cpp:15:5: error: '\U000000a0' does not name a type
   15 |      
      |     ^
Main.cpp:17:28: error: 'mxn' was not declared in this scope
   17 |     pair<int,int> jump[17][mxn];
      |                            ^~~
Main.cpp:19:5: error: 'node' does not name a type
   19 |     node segtree[17][mxn];
      |     ^~~~
Main.cpp:20:5: error: '\U000000a0' does not name a type
   20 |      
      |     ^
Main.cpp:33:5: error: '\U000000a0' does not name a type
   33 |      
      |     ^
Main.cpp:43:5: error: '\U000000a0' does not name a type
   43 |      
      |     ^
Main.cpp:60:5: error: '\U000000a0' does not name a type
   60 |      
      |     ^
Main.cpp:77:5: error: '\U000000a0' does not name a type
   77 |      
      |     ^
Main.cpp:91:5: error: '\U000000a0' does not name a type
   91 |      
      |     ^
Main.cpp:101:5: error: '\U000000a0' does not name a type
  101 |      
      |     ^