View Code of Problem 6

#include<iostream>
#include<vector>
#include<cmath>

using namespace std;

vector<int> merge(vector<int> v1, vector<int> v2){
	vector<int> v;
	v.push_back(max(v1[0], v2[0]));
	v.push_back(min(v1[1], v2[1]));
	return v;
}

int main(){
	
	int t;
	int n;
	int l, r;
	vector<int> v;
	vector<int> jump;
	vector<int> distance;
	vector<vector<int> > vv;
	cin>>t;
	for(int i=0; i<t; i++){
		cin>>n;
		bool flag=true;
		for(int j=0; j<n; j++){
			cin>>l>>r;
			v.push_back(l);
			v.push_back(r);
			vv.push_back(v);
			v.clear();	
		}
		if(n==1)
			cout<<"YES"<<endl;
		else{
			for(int k=0; k<n; k++){
				if(k==0){
					distance.push_back(vv[0][1]-0);
					distance.push_back(vv[1][0]-0);
					jump.push_back(vv[0][1]-0);
					jump.push_back(vv[1][0]-0);
				}
				else if(k==n-1){
					distance.push_back(vv[k][1]-vv[k][0]);
					distance.push_back(vv[k][1]-vv[k-1][1]);
				}
				else{
					distance.push_back(vv[k][1]-vv[k][0]);
					distance.push_back(vv[k+1][0]-vv[k-1][1]);
				}
				
				jump=merge(jump, distance);
				distance.clear();
				if(jump[0]>jump[1]){
					flag=false;
					break;
				}
			}
			if(flag)
				cout<<"YES"<<endl;
			else
				cout<<"NO"<<endl;
			jump.clear();
		}
		vv.clear();
	}
	
	return 0;
}

Double click to view unformatted code.


Back to problem 6