题意:最长不下降子序列
思路:n*n的算法肯定超时,所以nlogn的写法(dp+二分)dp数组存的是当前最长的最长不下降子序列,数组内保证递增,因此可以二分找下一个数字需要插入的位置
注意输出格式,road和roads区别,还有要输出两个换行
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
#define N 500100
int dp[N];
int road[N];
int binary(int n,int m)
{
int l=1,r=n;
while(l<=r)
{
int mid=(l+r)>>1;
if(m>=dp[mid]) l=mid+1;
else r=mid-1;
}
return l;
}
int main()
{
int n,t=0;
while(scanf("%d",&n)!=EOF)
{
int a,b;
memset(road,0,sizeof(road));
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
{
scanf("%d%d&#