RT,蒟蒻今天写了个最长上升子序列,忘记改%lld了,结果在这组数据错了。
10
-5 -1 8 -4 3 -2 -5 -6 2 -6
那么请问站内各位大佬,用%d读long long类型,但是int范围内的数一定会出错吗?
#include<iostream>
#include<cstdio>
#include<csrting>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1e5+10;
long long a[N],b[N],n,cnt;
int main(){
scanf("%d",&n);
b[cnt]=-1e9;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++){
int l=0,r=cnt;
while(l<r){
int mid=(l+r+1)>>1;
if(b[mid]>=a[i]){
r=mid-1;
}
else{
l=mid;
}
}
b[r+1]=a[i];
if(b[cnt+1]!=0){
cnt++;
}
}
if(cnt==0){
printf("1\n");
return 0;
}
printf("%d",cnt);
}