답안 #242132

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
242132 2020-06-27T00:27:30 Z ant101 Rima (COCI17_rima) C++14
0 / 140
5 ms 384 KB
#include <cstdio>
#include <cstring>
#include <cassert>
#include <algorithm>
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

#define TRACE(x) cerr << #x << " = " << x << endl
#define REP(i, n) for (int i=0; i<n; i++)
#define FOR(i, a, b) for (int i=(a); i<(b); i++)

typedef long long ll;
typedef pair<int, int> P;
#define X first
#define Y second

const int MAX = 3000100;

struct node {
    int br, dp;
    vector <pair<char, node*> > V;
    node() {
        br = dp = 0;
        V.clear();
    }
} *root;

char s[MAX];
int rje = 0;

void insert()
{
    int len = (int) strlen(s);
    node *tmp = root;
    REP(i, len) {
        node *nov = 0;
        for (auto it : tmp->V)
            if (it.X == s[i]) {
                nov = it.Y;
                break;
            }
        
        if (!nov) {
            nov = new node;
            tmp->V.push_back({s[i], nov});
        }
        tmp = nov;
    }
    
    tmp->br = 1;
}

void dfs(node *p)
{
    P mx{0, 0};
    int ima = 0;
    
    for (auto it : p->V) {
        dfs(it.Y);
        ima += it.Y->br;
        mx = max(mx, P(mx.X, it.Y->dp));
        mx = max(mx, P(it.Y->dp, mx.X));
        
        p->dp = max(p->dp, it.Y->dp);
    }
    
    if (p->br) p->dp += 1 + max(0, ima-1);
    else p->dp = 0;
    
    rje = max(rje, mx.X + mx.Y + p->br + max(0, ima - 2));
}

int main()
{
    root = new node;
    ifstream in;
    ifstream ino;
    in.open("rima.in.6");
    ino.open("rima.out.6");
    int sol;
    ino >> sol;
    ino.close();
    int n;
    in >> n;
    REP(i, n) {
        in >> s;
        reverse(s, s + strlen(s));
        insert();
    }
    in.close();
    dfs(root);
    cout << rje << endl;
    cout << sol << endl;
    return 0;
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 256 KB Output isn't correct
2 Incorrect 4 ms 384 KB Output isn't correct
3 Incorrect 5 ms 384 KB Output isn't correct
4 Incorrect 5 ms 256 KB Output isn't correct
5 Incorrect 5 ms 256 KB Output isn't correct
6 Incorrect 4 ms 256 KB Output isn't correct
7 Incorrect 4 ms 384 KB Output isn't correct
8 Incorrect 4 ms 256 KB Output isn't correct
9 Incorrect 5 ms 256 KB Output isn't correct
10 Incorrect 4 ms 256 KB Output isn't correct