Submission #134130

#TimeUsernameProblemLanguageResultExecution timeMemory
134130dragonslayeritGlobal Warming (CEOI18_glo)C++14
100 / 100
633 ms24956 KiB
#include <cstdio>
#include <algorithm>
#include <map>

const int INF=1e9+7;

int ts[200005];

int lis[400005];
int lisd[400005];

void update(int* ft,int i,int v){
  for(;i<=400004;i+=(i&-i)){
    ft[i]=std::max(ft[i],v);
  }
}

int query(int* ft,int i){
  int ac=0;
  for(;i>0;i-=(i&-i)){
    ac=std::max(ac,ft[i]);
  }
  return ac;
}

int main(){
  int N,X;
  scanf("%d %d",&N,&X);
  std::map<int,int> cps;
  for(int i=0;i<N;i++){
    scanf("%d",&ts[i]);
    cps[ts[i]];
    cps[ts[i]+X];
  }
  {
    int last=1;
    for(auto& it:cps){
      it.second=last++;
    }
  }
  for(int i=0;i<N;i++){
    int x=cps[ts[i]],y=cps[ts[i]+X];
    update(lisd,x,1+query(lisd,x-1));
    update(lisd,x,1+query(lis,y-1));
    update(lis,x,1+query(lis,x-1));
  }
  printf("%d\n",query(lisd,400004));
}

Compilation message (stderr)

glo.cpp: In function 'int main()':
glo.cpp:28:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d",&N,&X);
   ~~~~~^~~~~~~~~~~~~~~
glo.cpp:31:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&ts[i]);
     ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...