提出 #73492443


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using vl=vector<long long>;
using vvl=vector<vector<long long>>;
using vvvl=vector<vector<vector<long long>>>;
using pl=pair<long long,long long>;
using vpl=vector<pair<long long,long long>>;
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
#define _overload3(_1,_2,_3,name,...) name
#define _rep(i,n) repi(i,0,n)
#define repi(i,a,b) for(long long i=(long long)(a);i<(long long)(b);++i)
#define rep(...) _overload3(__VA_ARGS__,repi,_rep,)(__VA_ARGS__)
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#include <atcoder/all>
using namespace atcoder;

long long modpow(long long a, long long n, long long mo){long long res=1;while(n>0){if(n&1){res=res*a%mo;}a=a*a%mo;n>>=1;}return res;}
long long Pow(long long a, long long n){long long res=1;while(n>0){if(n&1){res=res*a;}a=a*a;n>>=1;}return res;}
//座標圧縮
template <typename T>
vector<T> compress(vector<T> &X) {
    vector<T> vals = X;
    sort(vals.begin(), vals.end());
    vals.erase(unique(vals.begin(), vals.end()), vals.end());
    for (int i = 0; i < (int)X.size(); i++) {
        X[i] = lower_bound(vals.begin(), vals.end(), X[i]) - vals.begin();
    }
    return vals;
}

const ll MOD=998244353;
const ll INF=(1ll<<60);
int main(){
  ll N;
  cin>>N;
  vl A(N);
  rep(i,N) cin>>A[i];
  auto mem=compress(A);
  vvl C(N);
  rep(i,N){
    C[A[i]].pb(i);
  }
  vvl G(N);
  rep(i,N){
    if(A[i]<mem.size()-1 && mem[A[i]]+1==mem[A[i]+1]){
      auto itr=lb(all(C[A[i]+1]),i);
      if(itr!=C[A[i]+1].end()){
        G[i].pb(*itr);
      }
    }
  }
  vl dp(N,0);
  rep(i,N-1){
    for(ll e:G[i]){
      dp[e]=max(dp[e],dp[i]+1);
    }
  }
  ll ans=0;
  rep(i,N) ans=max(ans,dp[i]+1);
  cout<<ans<<endl;
}

提出情報

提出日時
問題 D - Max Straight
ユーザ number_cat
言語 C++23 (GCC 15.2.0)
得点 400
コード長 1836 Byte
結果 AC
実行時間 93 ms
メモリ 29904 KiB

コンパイルエラー

./Main.cpp: In function 'int main()':
./Main.cpp:50:12: warning: comparison of integer expressions of different signedness: '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     if(A[i]<mem.size()-1 && mem[A[i]]+1==mem[A[i]+1]){

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 26
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3636 KiB
00_sample_01.txt AC 1 ms 3560 KiB
00_sample_02.txt AC 1 ms 3632 KiB
01_random_00.txt AC 1 ms 3416 KiB
01_random_01.txt AC 1 ms 3536 KiB
01_random_02.txt AC 1 ms 3416 KiB
01_random_03.txt AC 59 ms 29904 KiB
01_random_04.txt AC 72 ms 29768 KiB
01_random_05.txt AC 52 ms 15180 KiB
01_random_06.txt AC 26 ms 9288 KiB
01_random_07.txt AC 93 ms 23640 KiB
01_random_08.txt AC 32 ms 12344 KiB
01_random_09.txt AC 1 ms 3544 KiB
01_random_10.txt AC 79 ms 25688 KiB
01_random_11.txt AC 84 ms 25792 KiB
01_random_12.txt AC 9 ms 5592 KiB
01_random_13.txt AC 85 ms 25860 KiB
01_random_14.txt AC 3 ms 4272 KiB
01_random_15.txt AC 87 ms 25656 KiB
01_random_16.txt AC 45 ms 14916 KiB
01_random_17.txt AC 84 ms 29872 KiB
01_random_18.txt AC 80 ms 29140 KiB
01_random_19.txt AC 86 ms 29872 KiB
01_random_20.txt AC 59 ms 21764 KiB
01_random_21.txt AC 93 ms 29892 KiB
01_random_22.txt AC 8 ms 5500 KiB