結果
問題 | No.962 LCPs |
ユーザー | kotatsugame |
提出日時 | 2019-12-25 01:57:58 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 127 ms / 2,000 ms |
コード長 | 696 bytes |
コンパイル時間 | 943 ms |
コンパイル使用メモリ | 85,832 KB |
実行使用メモリ | 23,132 KB |
最終ジャッジ日時 | 2024-09-22 20:46:34 |
合計ジャッジ時間 | 4,220 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 64 |
コンパイルメッセージ
main.cpp:10:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 10 | main() | ^~~~
ソースコード
#include<iostream> #include<set> #include<vector> #include<algorithm> using namespace std; int N; string s[2<<17]; int d[2<<17]; long ans; main() { cin>>N; for(int i=0;i<N;i++) { cin>>s[i]; ans+=s[i].size(); } for(int i=0;i<N-1;i++) { while(d[i]<s[i].size()&&d[i]<s[i+1].size()&&s[i][d[i]]==s[i+1][d[i]])d[i]++; } vector<pair<int,int> >X; for(int i=0;i<N-1;i++) { X.push_back(make_pair(d[i],i+1)); } sort(X.begin(),X.end()); set<int>S; S.insert(0); S.insert(N); for(pair<int,int>p:X) { int id=p.second; set<int>::iterator it=S.lower_bound(id); long R=*it-id; it--; long L=id-*it; ans+=p.first*(R*L*(L+1)/2+L*R*(R+1)/2); S.insert(id); } cout<<ans<<endl; }