View Code of Problem 4061

#include<bits/stdc++.h>
using namespace std;

struct node{
	int s,a;
};
bool cmp(node x,node y){
	if(x.a==y.a)
	return x.s>y.s;
	return x.a<y.a;
}
int main(){
	int n;
	while(cin>>n){
		struct node m[n];
		for(int i=0;i<n;++i){
			scanf("%d %d",&m[i].s,&m[i].a);
		}
		sort(m,m+n,cmp);
		int f[n];
		for(int i=0;i<n;++i){
			f[i]=1;
			for(int j=0;j<i;++j){
				if(m[i].s<m[j].s)
				f[i]=max(f[j]+1,f[i]);
			}
			
		}
		int d=-1;
		for(int i=0;i<n;++i)
		d=max(d,f[i]);
		cout<<d<<endl;
	}
}

Double click to view unformatted code.


Back to problem 4061