結果
| 問題 |
No.672 最長AB列
|
| コンテスト | |
| ユーザー |
aaa
|
| 提出日時 | 2019-05-12 13:53:58 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,316 bytes |
| コンパイル時間 | 939 ms |
| コンパイル使用メモリ | 100,360 KB |
| 実行使用メモリ | 21,576 KB |
| 最終ジャッジ日時 | 2024-07-04 02:14:13 |
| 合計ジャッジ時間 | 4,590 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 5 WA * 1 TLE * 1 -- * 9 |
ソースコード
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <functional>
#include <map>
#include <iomanip>
#include <math.h>
#include <stack>
#include <queue>
#include <bitset>
#include <cstdlib>
#include <tuple>
#include <cctype>
#include <ctype.h>
#include <set>
#include <sstream>
#include <time.h>
using namespace std;
//#define int long long
#define rep(i,s,n) for(int i = s;i<n;i++)
#define repe(i,s,n) for(int i = s;i<=n;i++)
#define rrep(i,s,n) for(int i = (n)-1;i>=(s);i--)
#define all(v) (v).begin(),(v).end()
#define pb push_back
#define fi first
#define se second
#define chmin(a,b) a=min((a),(b))
#define chmax(a,b) a=max((a),(b))
#define l1 list[index]
#define l2 list[index - 1]
#define l3 list[index + 1]
#define iif(i,j) ((i<0 && j<0) || (i>0 && j>0)) ? true : false
typedef long long ll;
typedef pair<int, int>pint;
typedef vector<int>vint;
typedef vector<pint>vpint;
typedef pair<pint, int> P1;
typedef pair<int, pint> P2;
typedef pair<pint, pint> PP;
static const ll maxLL = (ll)1 << 62;
const ll MOD = 1000000007;
const ll INF = 1e18;
const double PI = 3.14159265359;
int ca[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
signed main() {
string s;
//int n, k;
vector<vector<int>>list(200000, vector<int>(2));
int l, cnt = 0, maxn = 0;
int n, n2, sum = 0;
cin >> s;
int num = s.length();
for (int i = 0, aa=0, bb=0; i < s.length(); i++) {
if (s[i] == 'A')aa++;
if (s[i] == 'B')bb++;
list[i][0] = aa;
list[i][1] = bb;
}
int numa = list[s.length() - 1][0];
int numb = list[s.length() - 1][1];
if (numa == numb)maxn = max(maxn, numa + numb);
for (int i = num - 2; i >= 0; i--) {
if (s[i + 1] == 'A'){
numa--;
}
else {
numb--;
}
int numa2 = numa;
int numb2 = numb;
for (int j = 0; j < s.length() && j + i < s.length(); j++) {
if (s[j + i] == 'A') {
numa2++;
}
else {
numb2++;
}
if (j != 0 && s[j - 1] == 'A') {
numa2--;
}
else if (j != 0 && s[j - 1] == 'B') {
numb2--;
}
/*for (int k = j; k <
num + j && k < s.length(); k++) {
if (s[k] == 'A')a++;
if (s[k] == 'B')b++;
}*/
if (numa2 == numb2)maxn = max(maxn, numa2 + numb2);
}
}
cout << maxn << endl;
getchar();
getchar();
return 0;
}
aaa