| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 50083 | chonka | Mate (COCI18_mate) | C++98 | 816 ms | 29276 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std ;
#define MAXN 2007
#define MOD 1000000007
int n ;
string a ;
int q ;
long long fac[ MAXN ] ;
long long invfac[ MAXN ] ;
int br[ MAXN ] ;
long long ans[ MAXN ][ 27 ][ 27 ] ;
long long fastpow ( long long x , long long st ) {
    long long ret = 1 ;
    while ( st != 0 ) {
        if ( ( st % 2 ) == 0 ) {
            st /= 2 ;
            x = ( x * x ) % MOD ;
        }
        else {
            st -- ;
            ret = ( ret * x ) % MOD ;
        }
    }
    return ret ;
}
void input ( ) {
    cin >> a ;
    n = a.size ( ) ;
    fac[ 0 ] = 1 ;
    invfac[ 0 ] = fastpow ( fac[ 0 ] , MOD - 2 ) ;
    int i ;
    for ( i = 1 ; i <= n ; i ++ ) {
        fac[ i ] = ( fac[ i - 1 ] * i ) % MOD ;
        invfac[ i ] = fastpow ( fac[ i ] , MOD - 2 ) ;
    }
}
void solve ( ) {
    int i , j , t ;
    cin >> q ;
    for ( i = 2 ; i <= n ; i ++ ) {
        for ( j = 0 ; j < 26 ; j ++ ) {
            br[ j ] = 0 ;
        }
        for ( j = n ; j >= i - 1 ; j -- ) {
            int id = ( a[ j - 1 ] - 'a' ) ;
            for ( t = 0 ; t < 26 ; t ++ ) {
                long long cur = br[ t ] ;
                cur = ( cur * fac[ j - 1 ] ) % MOD ;
                cur = ( cur * invfac[ i - 2 ] ) % MOD ;
                cur = ( cur * invfac[ j - i + 1 ] ) % MOD ;
                ans[ i ][ id ][ t ] = ( ans[ i ][ id ][ t ] + cur ) % MOD ;
            }
            br[ id ] ++ ;
        }
    }
    while ( q != 0 ) {
        q -- ;
        int len ;
        string aux ;
        cin >> len >> aux ;
        int x = ( aux[ 0 ] - 'a' ) ;
        int y = ( aux[ 1 ] - 'a' ) ;
        cout << ans[ len ][ x ][ y ] << "\n" ;
    }
}
int main ( ) {
    ios_base::sync_with_stdio ( false ) ;
    cin.tie ( NULL ) ;
    input ( ) ;
    solve ( ) ;
    return 0 ;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
