提出 #41760446


ソースコード 拡げる

#include<bits/stdc++.h>
using namespace std;

typedef long long int ll;
#define IOS ios_base::sync_with_stdio(0);  cin.tie(0); cout.tie(0);


#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>order_set;
typedef pair<int, int>pr;
#define all(i)     i.begin() , i.end()
#define ft     first
#define sn     second
#define pb push_back

#define dbg cout<<"rony\n"
#define en "\n"

#define MAXN 300010
#define inf 1e6+5
const ll mod = 1e9 + 7;
ll x, y, z;
string s;
ll mem[MAXN][2];
int n;

ll f(ll i, ll ke)
{
    if (i == n) return 0;
    if (mem[i][ke] != -1) return mem[i][ke];


    ll A = LLONG_MAX;
    if (s[i] == 'A') {
        if (ke == 1) {
            A = min(A, x + f(i + 1, 1));
            A = min(A, z + y + f(i + 1, 0));
            A = min(A, z + z + y + f(i + 1, 1));

            A = min(A, x + z + f(i + 1, 0));
        }
        else {
            A = min(A, z + x + f(i + 1, 1));
            A = min(A, y + f(i + 1, 0));
            A = min(A, z + y + f(i + 1, 1));
            A = min(A, z + x + z + f(i + 1, 0));
        }
    }
    else {
        if (ke == 1) {
            A = min(A, y + f(i + 1, ke));
            A = min(A, z + y + f(i + 1, 0));
            A = min(A, z + x + f(i + 1, 0));
            A = min(A, z + x + z + f(i + 1, 1));
        }
        else {
            A = min(A, x + f(i + 1, 0));
            A = min(A, x + z + f(i + 1, 1));
            A = min(A, z + y + f(i + 1, 1));
            A = min(A, z + y + z + f(i + 1, 0));
        }
    }

    return mem[i][ke] = A;
}
void solve()
{
    cin >> x >> y >> z;
    cin >> s;
    n = s.size();

    memset(mem, -1, sizeof(mem));

    ll an = f(0, 0);
    cout << an << en;
}
int main()
{
    IOS;
    ll t;
    t = 1;
    // cin >> t;

    int c = 0;
    while ( t-- )
    {
        // cout<<"Case "<<++c<<": ";
        solve();
    }
    return 0;
}

提出情報

提出日時
問題 D - Shift vs. CapsLock
ユーザ ar_rony1
言語 C++ (GCC 9.2.1)
得点 400
コード長 2079 Byte
結果 AC
実行時間 35 ms
メモリ 22468 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:87:9: warning: unused variable ‘c’ [-Wunused-variable]
   87 |     int c = 0;
      |         ^

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 31
セット名 テストケース
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_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 02_rnd_05.txt, 02_rnd_06.txt, 02_rnd_07.txt, 02_rnd_08.txt, 02_rnd_09.txt, 03_max_00.txt, 03_max_01.txt, 03_max_02.txt, 03_max_03.txt, 04_border_00.txt, 04_border_01.txt, 04_border_02.txt, 04_border_03.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 10 ms 8260 KiB
00_sample_01.txt AC 7 ms 8216 KiB
00_sample_02.txt AC 8 ms 8204 KiB
01_small_00.txt AC 10 ms 8176 KiB
01_small_01.txt AC 9 ms 8268 KiB
01_small_02.txt AC 8 ms 8228 KiB
01_small_03.txt AC 7 ms 8268 KiB
01_small_04.txt AC 7 ms 8284 KiB
01_small_05.txt AC 7 ms 8172 KiB
01_small_06.txt AC 13 ms 8228 KiB
01_small_07.txt AC 9 ms 8276 KiB
01_small_08.txt AC 9 ms 8220 KiB
01_small_09.txt AC 7 ms 8224 KiB
02_rnd_00.txt AC 29 ms 22268 KiB
02_rnd_01.txt AC 24 ms 20816 KiB
02_rnd_02.txt AC 25 ms 20588 KiB
02_rnd_03.txt AC 23 ms 18136 KiB
02_rnd_04.txt AC 25 ms 18392 KiB
02_rnd_05.txt AC 20 ms 17324 KiB
02_rnd_06.txt AC 25 ms 18820 KiB
02_rnd_07.txt AC 19 ms 16300 KiB
02_rnd_08.txt AC 26 ms 20036 KiB
02_rnd_09.txt AC 19 ms 15992 KiB
03_max_00.txt AC 28 ms 22452 KiB
03_max_01.txt AC 35 ms 22452 KiB
03_max_02.txt AC 26 ms 22360 KiB
03_max_03.txt AC 24 ms 22448 KiB
04_border_00.txt AC 24 ms 22468 KiB
04_border_01.txt AC 27 ms 22460 KiB
04_border_02.txt AC 27 ms 22448 KiB
04_border_03.txt AC 29 ms 22408 KiB