답안 #472721

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
472721 2021-09-14T08:35:55 Z HossamHero7 Lozinke (COCI17_lozinke) C++14
100 / 100
468 ms 16640 KB
#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;
typedef long long ll;
typedef vector <ll> row;
typedef vector <row> matrix;
#define endl '\n'
#define fast ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0);
#define all(v) ((v).begin()), ((v).end())
#define allR(v) ((v).rbegin()), ((v).rend())
#define For(i,n) for(int i=0;i<(int)(n);i++)
#define sz(v) v.size()
#define swapS(a,b) if(a>b) swap(a,b)
const ll mod = 1e9+7;
const ll OO = 1e18;
const ll invalid = -1e18;
int dx[] = {0,0,-1,1,1,1,-1,-1};
int dy[] = {1,-1,0,0,1,-1,-1,1};
ll fixMod(ll x){
    return ((x%mod) + mod) % mod;
}
ll lcm(ll a,ll b){
    return max(a,b)/__gcd(a,b)*min(a,b);
}
ll power(ll a,ll b){
    if(b==0) return 1;
    if(b==1) return a;
    if(b&1){
        ll y=power(a,b/2);
        return (y*y*a);
    }
    else {
        ll y=power(a,b/2);
        return (y*y);
    }
}
ll inv(ll n){
    return power(n,(mod-2));
}
matrix zero(int n,int m){
    return matrix(n,row(m,0));
}
matrix identity(int n){
    matrix ret = zero(n,n);
    for(int i=0;i<n;i++){
        ret[i][i] = 1;
    }
    return ret;
}
matrix multiply(const matrix &a, const matrix &b){
    matrix ret = zero(a.size(),b[0].size());
    for(int i=0;i<a.size();i++){
        for(int k=0;k<a[0].size();k++){
            for(int j=0;j<b[0].size();j++){
                ret[i][j] += a[i][k] * b[k][j];
                ret[i][j] = ret[i][j];
            }
        }
    }
    return ret;
}
matrix matrixPower(matrix &a,ll b){
    if(b == 0) return identity(a.size());
    if(b == 1) return a;
    matrix r = matrixPower(a,b/2);
    if(b&1) return multiply(multiply(r,r),a);
    return multiply(r,r);
}
void solve(){
    int n;
    cin>>n;
    vector <string> v(n);
    for(auto &i:v) cin>>i;
    map <string,int> frq1;
    for(auto i : v){
        frq1[i] ++;
    }
    vector <int> frq2(n);
    for(int i2=0;i2<n;i2++){
        int cnt=0;
        map <string,bool> vis;
        for(int i=0;i<sz(v[i2]);i++){
            string sub = "";
            for(int j=i;j<sz(v[i2]);j++){
                sub += v[i2][j];
                if(!vis[sub])cnt += frq1[sub];
                vis[sub] = 1;
            }
        }
        cnt --;
        frq2[i2] = cnt;
    }
    ll ans = 0;
    for(auto i : frq2) ans += i;
    cout<<ans<<endl;
}
int main()
{
    fast
    ll t=1;
    // cin>>t;
    while(t--){
        //Some important Notes:
        //  1- Any minus with mod fixed mod
        //  2- Any divide with mod inverse
        //  3- Any mod problem make mod in every where
        //  4- Any dp problem don't forget to return the saved value :)
        solve();
    }
    return 0;
}

Compilation message

lozinke.cpp: In function 'matrix multiply(const matrix&, const matrix&)':
lozinke.cpp:52:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |     for(int i=0;i<a.size();i++){
      |                 ~^~~~~~~~~
lozinke.cpp:53:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         for(int k=0;k<a[0].size();k++){
      |                     ~^~~~~~~~~~~~
lozinke.cpp:54:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |             for(int j=0;j<b[0].size();j++){
      |                         ~^~~~~~~~~~~~
lozinke.cpp: In function 'void solve()':
lozinke.cpp:82:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |         for(int i=0;i<sz(v[i2]);i++){
      |                      ^
lozinke.cpp:84:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |             for(int j=i;j<sz(v[i2]);j++){
      |                          ^
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 2 ms 332 KB Output is correct
5 Correct 10 ms 648 KB Output is correct
6 Correct 17 ms 680 KB Output is correct
7 Correct 22 ms 1364 KB Output is correct
8 Correct 35 ms 2288 KB Output is correct
9 Correct 97 ms 2432 KB Output is correct
10 Correct 197 ms 7544 KB Output is correct
11 Correct 155 ms 4300 KB Output is correct
12 Correct 424 ms 16640 KB Output is correct
13 Correct 309 ms 2916 KB Output is correct
14 Correct 299 ms 15080 KB Output is correct
15 Correct 468 ms 16540 KB Output is correct
16 Correct 311 ms 1284 KB Output is correct
17 Correct 111 ms 1228 KB Output is correct
18 Correct 62 ms 1100 KB Output is correct
19 Correct 293 ms 8640 KB Output is correct
20 Correct 155 ms 1228 KB Output is correct