結果
| 問題 |
No.2992 Range ABCD String Query
|
| コンテスト | |
| ユーザー |
Cecil
|
| 提出日時 | 2024-12-17 01:42:20 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 19 TLE * 22 |
ソースコード
#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;
}
Cecil