hiho week 127 register

Ended

Participants:196

Verdict:Accepted
Score:100 / 100
Submitted:2016-12-06 20:51:15

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <string>
#include <iostream>
#include <map>
using namespace std;
int main() {
    string s;
    int n,m;
    map<long long,string> shortest,longest;
    map<string,long long> dict;
    cin >> s >> n;
    m = s.length();
    for(int i = 0; i < m; i++) {
        for(int j = 1; j <= m-i; j++) {
            string x = s.substr(i,j);
            long long st = 0;
            for(int k = 0; k <= m-j; k++) {
                if(x==s.substr(k,j)) {
                    st |= (1LL<<(k+j));
                }
            }
            if(shortest[st].length()==0 || j < (int)shortest[st].length()) {
                shortest[st] = x;
            }
            if(j > (int)longest[st].length()) {
                longest[st] = x;
            }
            dict[x] = st;
        }
    }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX