Submission #515780

#TimeUsernameProblemLanguageResultExecution timeMemory
515780LouayFarahLozinke (COCI17_lozinke)C++14
100 / 100
297 ms1660 KiB
#include "bits/stdc++.h"

using namespace std;

#define ll long long int
#define pb push_back
#define mp make_pair
#define fi first
#define se second

const long long MOD = 998244353;
const long long INF = 1e18;

int nx[4] = {0, 0, -1, 1};
int ny[4] = {1, -1, 0, 0};

ll my_rand(ll l, ll r)
{
    srand(chrono::steady_clock::now().time_since_epoch().count());
    ll len = r-l;
    ll a = rand()%len;
    ll b = rand()%len;

    ll res = ((((a%len)*((RAND_MAX+1)%len))%len) + (b%len))%len;

    if(res<l)
        res +=l;

    return res;
}

bool substring(string sub, string s)
{
    for(int i = 0; i+int(sub.length())-1<int(s.length()); i++)
    {
        bool flag = true;
        for(int j = 0; j<int(sub.length()); j++)
        {
            if(sub[j]!=s[i+j])
            {
                flag = false;
                break;
            }
        }

        if(flag)
            return true;
    }

    return false;
}

bool compare(string &a, string &b)
{
    int lena = int(a.length());
    int lenb = int(b.length());

    if(lena==lenb)
        return a<=b;
    return lena<lenb;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);


    ll n;
    cin >> n;

    vector<string> arr;
    for(int i = 0; i<n; i++)
    {
        string s;
        cin >> s;

        arr.pb(s);
    }

    sort(arr.begin(), arr.end());


    ll res = 0;

    for(int i = 0; i<n; i++)
    {
        string s = arr[i];
        ll len = int(s.length());
        set<string> visited;
        for(int j = 0; j<len; j++)
        {
            string curr = "";
            for(int k = j; k<len; k++)
            {
                curr.pb(s[k]);
                if(visited.count(curr)==1)
                    continue;
                visited.insert(curr);

                res+=upper_bound(arr.begin(), arr.end(), curr)-lower_bound(arr.begin(), arr.end(), curr);
            }
        }
    }

    cout << res-n << endl;

    return 0;
}

Compilation message (stderr)

lozinke.cpp: In function 'long long int my_rand(long long int, long long int)':
lozinke.cpp:24:35: warning: integer overflow in expression of type 'int' results in '-2147483648' [-Woverflow]
   24 |     ll res = ((((a%len)*((RAND_MAX+1)%len))%len) + (b%len))%len;
      |                                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...