結果

提出番号 968
提出者 MMNMM
言語 C++
提出日時 2017-08-01 16:37:26
問題名 (43)文字列をやたらめったら繰り返す
結果 WA
点数 0%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 WA 0% 2ms 7968KB
2 WA 0% 2ms 7984KB
3 WA 0% 2ms 8320KB
4 WA 0% 2ms 8336KB
5 WA 0% 2ms 8304KB
6 WA 0% 2ms 8336KB
7 WA 0% 2ms 8336KB
8 WA 0% 2ms 7520KB
9 WA 0% 2ms 7424KB
10 WA 0% 2ms 7664KB
11 WA 0% 3ms 7968KB
12 WA 0% 3ms 8304KB
13 WA 0% 7ms 7760KB
14 WA 0% 6ms 7792KB
15 WA 0% 3ms 8336KB
16 WA 0% 3ms 8320KB
17 WA 0% 3ms 8320KB
18 WA 0% 3ms 8000KB
19 WA 0% 3ms 8336KB
20 WA 0% 3ms 8304KB

ソースコード

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

long long int N, L, R, l, r, v, p, al[1145][26], ll[1145], A[26], B[26], i;
char s[1145], S[3643];

void cnt(long long a[26], long long b){
    long long bb = (upper_bound(ll, ll + N + 1, b) - ll) - 1;
    //cout << b << " " << bb << " " << ll[bb] << endl;
    if(bb <= 0){
        for(int i = 0; i < b; ++i){
            ++a[S[i] - 97];
        }
        return;
    }
    for(int i = 0; i < 26; ++i){
        a[i] += al[bb + 1][i] * (b / ll[bb]);
    }
    cnt(a, b % ll[bb]);
}

int main(){
    scanf("%lld%lld%lld", &N, &L, &R);
    --L;
    for(int i = 0; ++i <= N; ll[i] *= (v + 1)){
        p = v;
        scanf("%s%lld", s, &v);
        if(i == 1)strcpy(S, s);
        if(i == 2)strcat(S, s);
        for(char j : s){
            if(!j)break;
            ++ll[i - 1];
            ++al[i][j - 97];
        }
        for(int j = 0; j < 26; ++j){
            al[i][j] += al[i - 1][j] * (p + 1);
        }
        ll[i] += ll[i - 1];
    }
    for(int j = 0; j < 26; ++j){
        al[N + 1][j] += al[N][j] * (v + 1);
    }
    //for(int i = 0; i <= N; ++i){
    //    cout << ll[i] << "\t:";
    //    for(int j = 0; j < 26; ++j)cout << al[i][j] << (j == 25 ? "\n" : " ");
    //}
    cnt(A, R);
    cnt(B, L);
    //for(int i = 0; i < 26; ++i){
    //    cout << A[i] << (i == 25?"\n":" ");
    //}
    //for(int i = 0; i < 26; ++i){
    //    cout << B[i] << (i == 25?"\n":" ");
    //}
    for(int i = 0; i < 26; ++i){
        cout << A[i] - B[i] << (i == 25?"\n":" ");
    }
    return 0;
}