# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
850062 | 2023-09-15T17:02:38 Z | dshfjka | Type Printer (IOI08_printer) | C++14 | 1000 ms | 49096 KB |
#include <bits/stdc++.h> #define LL long long #define fi first #define se second using namespace std; vector<char>v; int dp[500001]; // kata terpanjang dimaksukin nanti aja bos int cnt[500001]; struct Trie{ int masuk=0; struct node{ map<char,int>child; }; vector<node>t; Trie(){ t.emplace_back(); } void insert(int depth ,int pos,const string& s) { if(depth==s.length()) { cnt[pos]++; return; } if(!t[pos].child.count(s[depth])){ t[pos].child[s[depth]]=t.size(); t.emplace_back(); } int jeje=t[pos].child[s[depth]]; insert(depth+1,jeje,s); dp[pos]=max(dp[pos],dp[jeje]+1); // t[pos].cnt++; } void query( int pos, bool status) { // if(++masuk ==60)exit(0); // cout<<"pos :"<<pos<<" status :"<<status<<endl; bool masuk=0; int maks=-1; char ket; for(int i=0;i<cnt[pos];i++)v.push_back('P'); if(status==1) { for(pair<char,int>a:t[pos].child) { if(dp[a.se]>maks) { maks=dp[a.se]; ket=a.fi; } } } // printf("maks=%d dan ket=%c\n",maks,ket+'a'); for(pair<char,int>a:t[pos].child) { if(ket!=a.fi) { // printf("MASUK dengan %c \n",a+'a'); v.push_back(a.fi); query(a.se,0); v.push_back('-'); } } if(status && maks!=-1) { v.push_back(ket); query(t[pos].child[ket],1); } } }; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; Trie trie; for(int a=1;a<=n;a++) { string x; cin>>x; trie.insert(0,0,x); } trie.query(0,1); cout<<v.size()<<endl; for(char a:v)cout<<a<<endl; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 344 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 344 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 1 ms | 600 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Correct | 0 ms | 348 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 344 KB | Output is correct |
2 | Correct | 12 ms | 1112 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 1172 KB | Output is correct |
2 | Correct | 20 ms | 1688 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 66 ms | 3144 KB | Output is correct |
2 | Correct | 130 ms | 6412 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 157 ms | 7688 KB | Output is correct |
2 | Correct | 50 ms | 1912 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 383 ms | 21252 KB | Output is correct |
2 | Correct | 864 ms | 42016 KB | Output is correct |
3 | Incorrect | 470 ms | 23140 KB | didn't print every word |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 345 ms | 14448 KB | Output is correct |
2 | Execution timed out | 1036 ms | 49096 KB | Time limit exceeded |
3 | Halted | 0 ms | 0 KB | - |