結果

問題 No.2992 Range ABCD String Query
ユーザー CecilCecil
提出日時 2024-12-17 01:42:20
言語 C++23
(gcc 12.3.0 + boost 1.83.0)
結果
TLE  
実行時間 -
コード長 1,050 bytes
コンパイル時間 1,287 ms
コンパイル使用メモリ 115,960 KB
実行使用メモリ 13,760 KB
最終ジャッジ日時 2024-12-17 01:45:04
合計ジャッジ時間 161,822 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 215 ms
12,924 KB
testcase_01 AC 211 ms
12,712 KB
testcase_02 AC 241 ms
12,836 KB
testcase_03 AC 218 ms
12,340 KB
testcase_04 AC 282 ms
12,120 KB
testcase_05 AC 211 ms
12,060 KB
testcase_06 AC 235 ms
12,088 KB
testcase_07 AC 194 ms
13,088 KB
testcase_08 AC 267 ms
12,188 KB
testcase_09 AC 238 ms
13,396 KB
testcase_10 TLE -
testcase_11 TLE -
testcase_12 TLE -
testcase_13 TLE -
testcase_14 TLE -
testcase_15 TLE -
testcase_16 TLE -
testcase_17 TLE -
testcase_18 TLE -
testcase_19 TLE -
testcase_20 TLE -
testcase_21 TLE -
testcase_22 TLE -
testcase_23 TLE -
testcase_24 TLE -
testcase_25 AC 107 ms
6,820 KB
testcase_26 AC 108 ms
6,820 KB
testcase_27 AC 106 ms
6,820 KB
testcase_28 AC 108 ms
6,820 KB
testcase_29 AC 120 ms
6,816 KB
testcase_30 TLE -
testcase_31 TLE -
testcase_32 TLE -
testcase_33 TLE -
testcase_34 TLE -
testcase_35 TLE -
testcase_36 TLE -
testcase_37 AC 194 ms
6,816 KB
testcase_38 AC 196 ms
6,816 KB
testcase_39 AC 197 ms
6,820 KB
testcase_40 AC 215 ms
13,140 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
#include<climits>
using namespace std;
const int INF = INT_MAX;

int LIS(const vector<int>&L){
    vector<int> lis(L.size()+1, INF);
    for (int l:L){
        *upper_bound(lis.begin(), lis.end(), l) = l;
    }
    return L.size()-(lower_bound(lis.begin(),lis.end(),INF)-lis.begin());
}

int main(){
    int N,Q;
    cin >> N >> Q;
    string S;
    cin >> S;
    map<char, int> dic = {{'A',0},{'B',1},{'C',2},{'D',3}};
    vector<int> seq(N);
    for (int i=0; i<N; i++){
        seq[i] = dic[S[i]];
    }
    for (int i=0; i<Q; i++){
        string query;
        cin >> query;
        if (query=="1"){
            int x;
            char c;
            cin >> x >> c;
            --x;
            seq[x] = dic[c];
        }else if (query=="2"){
            int l,r;
            cin >> l >> r;
            --l;
            --r;
            vector<int> sub_seq(seq.begin()+l,seq.begin()+r+1);
            cout<<LIS(sub_seq)<<endl;
        }
    }
    return 0;
}
0