QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#656021 | #9406. Triangle | 11d10xy | WA | 170ms | 73268kb | C++14 | 4.4kb | 2024-10-19 10:53:32 | 2024-10-19 10:53:32 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using i64=long long;
namespace sa{
char str[300010];
int n,sa[300010],rk[300010],cnt[300010],tmp[300010],h[300010],mi[21][300010];
void cntsort(int*s,int*key,int*t,int V){
for(int i=0;i<=V;i++)cnt[i]=0;
for(int i=1;i<=n;i++)cnt[key[i]]++;
for(int i=1;i<=V;i++)cnt[i]+=cnt[i-1];
for(int i=n;i>=1;i--)t[cnt[key[s[i]]]--]=s[i];
}
void build(){
for(int i=1;i<=n;i++)tmp[i]=i,rk[i]=str[i];
cntsort(tmp,rk,sa,'z');
for(int len=1,p=0;p<n;len<<=1){
p=0;
for(int i=n;i>n-len;i--)tmp[++p]=i;
for(int i=1;i<=n;i++)if(sa[i]>len)tmp[++p]=sa[i]-len;
cntsort(tmp,rk,sa,n);
for(int i=1;i<=n;i++)tmp[i]=rk[i];
p=0;
for(int i=1;i<=n;i++){
if(tmp[sa[i]]==tmp[sa[i-1]]&&tmp[sa[i]+len]==tmp[sa[i-1]+len]){
rk[sa[i]]=p;
}else rk[sa[i]]=++p;
}
}
for(int i=1;i<=n;i++){
h[i]=max(h[i-1]-1,0);
for(;str[i+h[i]]==str[sa[rk[i]-1]+h[i]];h[i]++);
}
for(int i=1;i<=n;i++)mi[0][i]=h[sa[i]];
for(int i=1;i<=20;i++)for(int k=1;k+(1<<i)-1<=n;k++){
mi[i][k]=min(mi[i-1][k],mi[i-1][k+(1<<i-1)]);
}
}
int lcp(int i,int j){
if(i==j)return n-i+1;
i=rk[i],j=rk[j];
if(i>j)swap(i,j);
i++;int g=__lg(j-i+1);
return min(mi[g][i],mi[g][j-(1<<g)+1]);
}
void clear(){
for(int i=1;i<=n;i++)sa[i]=rk[i]=0;n=0;
}
}
int n,pos[300010];
struct N_{string s;int c;}a[300010];
char buf[300010];
namespace calcer{
int cnt[300010];
inline void add(int p,int v){
for(;p<=n;p+=p&-p)cnt[p]+=v;
}
inline int ask(int p){
int s=0;for(;p;p-=p&-p)s+=cnt[p];
return s;
}
struct P_{int y,w;};
struct R_{int l,r;i64 w;};
vector<P_>pnt[300010];
vector<R_>qs[300010];
i64 work(){
i64 res=0;
for(int i=1;i<=n;i++){
for(P_ y:pnt[i])add(y.y,y.w);
for(R_ x:qs[i])res+=x.w*(ask(x.r)-ask(x.l-1));
}
return res;
}
void clear(){
for(int i=1;i<=n;i++){
cnt[i]=0,pnt[i].clear(),qs[i].clear();
}
}
}
inline int lcp(int i,int pi,int j,int pj){
return min({sa::lcp(pos[i]+pi,pos[j]+pj),(int)a[i].s.length()-pi,(int)a[j].s.length()-pj});
}
int perm[300010],invp[300010];
void init(){
scanf("%d",&n);
vector<string>S(n);
for(auto&s:S)scanf("%s",buf),s.assign(buf);
stable_sort(begin(S),end(S));
n=0;
for(auto&s:S){
if(!n||s!=a[n].s)a[++n]={s,1};
else a[n].c++;
}
for(int i=1;i<=n;i++){
pos[i]=sa::n+1;
for(char c:a[i].s)sa::str[++sa::n]=c;
}
sa::build();
}
void solve(){
init();
for(int i=1;i<=n;i++)perm[i]=i;
auto cmper=[](int x,int y){
int i=a[x].s.length(),p=lcp(y,0,y,i);
if(i+p<a[y].s.length()){
return a[y].s[p]-a[y].s[i+p];
}
i=a[y].s.length()-a[x].s.length(),p=lcp(x,0,y,i);
if(p==a[x].s.length())return 0;
return a[y].s[i+p]-a[x].s[p];
};
auto ckpref=[](int x,int y){
int i=min(a[x].s.length(),a[y].s.length());
if(a[x].s.substr(0,i)!=a[y].s.substr(0,i))return false;
return true;
};
stable_sort(perm+1,perm+n+1,[&](int x,int y){
if(!ckpref(x,y))return x<y;
if(x<y)return cmper(x,y)<0;
else return cmper(y,x)>0;
});
for(int i=1;i<=n;i++)invp[perm[i]]=i;
for(int i=1;i<=n;i++){
calcer::pnt[i].push_back({invp[i],a[i].c});
}
i64 ans=0;
vector<int>stk;
for(int i=1;i<=n;i++){
while(!stk.empty()&&!ckpref(stk.back(),i))stk.pop_back();
for(int j:stk){
int l=1,r=i;
while(l<r){
int mid=l+r>>1,p=lcp(mid,0,i,a[j].s.length());
bool ge;
if(p==a[mid].s.length())ge=false;
else if(a[j].s.length()+p==a[i].s.length())ge=true;
else ge=a[mid].s[p]>a[i].s[a[j].s.length()+p];
if(ge)r=mid;
else l=mid+1;
}
if(l<i){
calcer::qs[l-1].push_back({1,invp[j]-1,-a[i].c*1ll*a[j].c});
calcer::qs[i-1].push_back({1,invp[j]-1,a[i].c*1ll*a[j].c});
}
if(l<=j)ans+=a[i].c*1ll*a[j].c*(a[j].c-1)/2;
}stk.push_back(i);
}
for(int i=1,s=0;i<=n;i++){
ans+=a[i].c*1ll*(a[i].c-1)*(a[i].c-2)/6+a[i].c*1ll*(a[i].c-1)/2*s;
s+=a[i].c;
}
ans+=calcer::work();
printf("%lld\n",ans);
calcer::clear(),sa::clear();
}
int main(){
int T;for(scanf("%d",&T);T--;)solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 42752kb
input:
3 6 cbaa cb cb cbaa ba ba 3 sdcpc sd cpc 1 ccpc
output:
16 0 0
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 3ms
memory: 48972kb
input:
14 1 lfpbavjsm 2 pdtlkfwn mbd 3 dvqksg dvqksg uhbhpyhj 4 ombwb ombwb ombwb ombwb 5 oztclz oztclz oztclz oztclz kul 6 vco vco vco dtktsqtinm vco vco 7 tb tb kowbsu ygkfphcij tb uvei tb 8 vxxtxssht abnsxbf bydaae bydaae udalyvmcef bydaae bydaae bydaae 9 aaze zvyonw qjfv mmhkef qjfv qjfv qjfv mmhkef qj...
output:
0 0 0 4 10 20 10 20 41 14 63 74 18 11081
result:
ok 14 lines
Test #3:
score: 0
Accepted
time: 0ms
memory: 46864kb
input:
11 10 bppzfsncq bppzfsncq vcqxgcehdx bppzfsncq bppzfsncq muwrcvt w aanwhqmync aanwhqmync bppzfsncq 10 t jkky t z t t z z z t 10 qidkyca uhqubvbo kosyvh gsj gsj gsj duo jrro gsj jrro 10 lhktb lhktb lhktb uohl lhktb r lhktb lhktb wruim lhktb 10 e gqvdmpvxb gqvdmpvxb gqvdmpvxb sttirbhz gqvdmpvxb zdfpm ...
output:
30 60 15 35 20 20 23 12 38 44 8047
result:
ok 11 lines
Test #4:
score: 0
Accepted
time: 4ms
memory: 51008kb
input:
11 100 kalgqjh mdszzwe qxn kalgqjh hy kalgqjh suplvp r kkeoxmx tcoise suplvp suplvp y kalgqjh vrwniyici jmnyrradyq kalgqjh kalgqjh suplvp rkg xzevyk zc suplvp hcupv kalgqjh qakyahjaoi mum pbg u ip kalgqjh kalgqjh jngc ylr suplvp qxn kalgqjh bzwodm e kalgqjh kalgqjh evmm kbymvbccs kalgqjh suplvp kalg...
output:
12478 6722 9220 6668 4934 11233 7950 5470 4525 5743 1586066
result:
ok 11 lines
Test #5:
score: 0
Accepted
time: 4ms
memory: 53104kb
input:
2 1000 t lhijhkxzzx nhfiksblww h xg z dcbmbvyz ois ynwjgfp oqzv qtoinl gr teu kmza hs t mwhewk kjmuneon bekku qheweh szhagft fcwjp bobwnap y oqpole oqzv xeaiyhfeg rjkdidea wmeslege vyyi teomn yvmcnw vnvum tgnl swqqruuvc xxllevp bov dse e b rtbhogkx nzs e bs pppyndgrrv n tzbwqdusn e xeaiyhfeg i agnet...
output:
2430570 1904282
result:
ok 2 lines
Test #6:
score: 0
Accepted
time: 33ms
memory: 58716kb
input:
503 16 yh yh yhc yhc yhcowdfqlwfidnx yhc yhc yh yhcowdfqlwfidn yhcowdfqlwfidnx yh h yh yhcowdfqlwfidnx yhcowdfqlwfidnx yhc 19 nb nbg vpfkllgv nmzqfsuafqtayjjjcidpygz nb nb gutq n omyuvm fgxtfbhuglxyiumi nbghjuti nbg nb fgxt nbghjuti n nb nbg n 7 rtjiwfidoahckhvgoxvvrncqvgerqiuaruiftakvugsgnsw wllcan...
output:
531 485 6 12 4 118 6 3 1635 18 373 20 954 6208 45 12 1124 79 267 2 5778 22 13 1 1 16 630 0 7 16315 0 2155 2308 26 936 109 103 5 0 2492 7 2 114 144 11 158 0 0 101 455 0 12234 78 631 5402 94 66 84 161 4412 5 3 81 22 20 13 52 632 6 137 56 2 3 64521 122 330 0 0 7 0 113 249 8 301 335 1825 110 4 108 50 10...
result:
ok 503 lines
Test #7:
score: 0
Accepted
time: 22ms
memory: 58792kb
input:
503 23 rjyyivdg n n n n n n n nmr n nmrk nm rjyyivdguyiffnvunoxconw n n n o lixclcmwthwkrsi mqluhyypgfkmdvgpzju n nmrk rjy n 15 jotwxwhaqdxmazhslyouztprzlirisvwvduojb jot jotwxw j jotwx jotwx gohg j gdgneodagmdhvvapjh jotwxw xs vurk vurk j xs 7 xrczucnkbemaymvabkkwnn xrczucnkbemaymvabkkwnn xrczucnkb...
output:
855 58 35 0 1 56 2 112 1 8465 242 56 110 23 544 0 3 17 29 11 764 20 9 0 4 77 812 35 4 10 32 437 9 2364 3 2 11 2 421 50 4 107 1 62 1120 3 1 16 3970 1147 1026 8 4 85 9 31 61 16 205 2 2 84 238 1 1 51 4 0 16 61 331 4 16 7 0 7 148 10 13 2 1 37 1 67 0 296 1 0 644 32 2 10 0 5 126 3490 4 0 10 331 1216 7921 ...
result:
ok 503 lines
Test #8:
score: 0
Accepted
time: 26ms
memory: 58912kb
input:
503 5 ljtolmgjndlwoyjjttak mihjdhkyfnafwrpeuiuiurusvsnu ljtolmgjndlwoyjjttak mihjd ljtolmgjndlwoyjjttak 25 lhx lh lhx lh k lh kninp l lhx lhx izeqohkpfuovopebttqaufmmlivd lhx lhx qid lhx lh lhx lhx oklb l lhx lhx lhx lhx l 9 mxeonfwpujrilfigjoiyjkzdmi fezhyrcyqy mx fezh f dmvfbklnkxmnetib dmvfbkln m...
output:
4 1476 27 26 117970 2 105 30 4 737 4 2 19 48 34 434 6 78331 22 23 0 228 56 4 3 305 9 84 132 199 20 3 4057 0 0 20 35 34 48 4 266 14 17 4788 545 28989 0 10 535 84 1 1775 322 11 57 16 15 1331 5 0 10 5 183 8 2 237 10 0 60 20 42 7 10 297 14 210 6254 7 3 0 13 2744 119 47 0 1 68114 17 1 2 1 7 1 2 113 26 0 ...
result:
ok 503 lines
Test #9:
score: 0
Accepted
time: 21ms
memory: 59068kb
input:
503 11 wkeoqqqpvmgdv w w w wkeoqqqpvmgdv sgrwmsfwclpamgq wkeoqqqpvm qkmbyvcxjsh wkeoqqqpvm wke wkeoqqqpvmgdv 7 otd qelodfwrqeprgyvzbcjljx qe qelodfwrqeprgyvzbcjlj qelodfwrqeprgyvzbcjlj qelodfwrqeprgyvzbcjlj c 15 rce rce fwq fwqqfcjrhqot rceft jkdrcehfwhqkupe fwq r jkdr fwq rceft rce fwqqfcjrhqot fwq...
output:
156 17 213 12 20 1 374 4 0 26 26 3 122 30 4005 24 1385 50 84 44 0 112 42 36 19 887 99 5 9 13 2 5029 52 14 84 116 2 10 4 8 141 9287 822 37 5 13 25 1030 0 2 3 35 81 1 0 1 138 0 578 7 30 636 63 22 2118 863 5377 33 34 10 156 336 1 7 7 4 1793 2 124 13 4 2015 7 23 1 4516 3 17 6 35 13336 9 61 3093 0 1 7 22...
result:
ok 503 lines
Test #10:
score: 0
Accepted
time: 160ms
memory: 73220kb
input:
1003 3 mpfowyd mpfowydrivrkjiarwcxwbfqvnktlzcfolbbsgelvcnzeqy hytzojmfeiwtpquxhneeznbdjjlsptedaorwfsxi 3 nyfcq nyfcqgrmshiwmgcbukozvetdggebkkychamof nyfcqgrmshiwmgcbukozvetdggebkkychamofadozdympuejvhdnpi 8 yoeqyfcjsywowdrlzzybjvtycqvizzomc zci yoeqyfc zcinc yoeqyfcjsywowdrlzzybjvtycqvizzomc y zcinc ...
output:
0 1 26 10 66 403 1 265 1025 16 329 4 1219 1 10 70 30 182 60 5 71 1 20 5343 22328 40667 90 6983 66 10 35 20 250 307 913 98 44 5393 56 280 270 3 3 2229 77 17 774 50 5 21 0 208 8 14 185 35 20 11 465 132 176 10 0 10 1704 13 44 141 0 0 5 10 79 17 213 10 108 0 0 289 10 255 27 493 4 1 24 379 30 9 284 173 2...
result:
ok 1003 lines
Test #11:
score: 0
Accepted
time: 170ms
memory: 71680kb
input:
1003 6 exssl exsslhsuwyemcafatpinzvdeypwjqsnvxlkvmpywgx f exss exs exsslhsuwyemcafatpinzvdeypwjqsnvxlkvmpywgx 7 hzzev hzzevmltbehnvjfhsz hzzevmltbe hzzevmltbehnvjfhszqzobn hzzevmltbehnvjf hm hzzevmltbehnvjfhszqzobn 9 rdx rdxnxdfcyrdpgwzwtqgtu rdx rdxnxdfcyrdpgwzwtqgtu f kpotnxntufvd kpotnxntufvdlmij...
output:
3 19 41 134 107 2 372 0 466 456 20 13 25 339 64 170 1 5 27295 3 1 221 116 11 29 19 1006 16827 16 19863 4 6 5784 3 20 21130 66 1275 100 731 83 3 84 0 32 3 615 207 8 44 245 48 165 18050 128 11 864 21 3 1221 120 51 21 8 247 302 0 1098 0 57 42 20 0 845 1 84 16 4 0 2 836 482 4 12 150 654 1035 142 291 34 ...
result:
ok 1003 lines
Test #12:
score: 0
Accepted
time: 139ms
memory: 73268kb
input:
1003 10 lgbpleleme u u uxpwzhga uxpwzhg u uxpwzhgaadltqqpqkbteylath u uxpwzhgaadltqqpqkbteylath uxpwzhgaadltqqpq 9 aqoxfsmqwpafbocodlpdykesadqgiggw swzjus oim aqoxfsmq aqoxfsmqwpafboc swzju nohnsjbdhljarh swzjusx aqoxf 20 mbdiqaartewavbbwbhftzwxm k mbdiqaartewavbbwbhftzwxm kx kxs kxsqv kx kx kxsqv k...
output:
70 0 290 10 604 1770 2 913 1 165 16 316 4 169 26 3 36 2 1549 2 13 15 21 14 109 34 16 1889 132 1700 1 96 17 436 2 0 6183 4144 0 4 50 4 10 5 4 4 78 10 16 97 16 50204 15871 350 3 865 46 7 0 73 38 46 29 1946 65 22088 7 91 43 310 1806 0 50 4 17 38725 262 50 0 304 141 35 50 0 22760 2973 14 410 1112 20 703...
result:
ok 1003 lines
Test #13:
score: 0
Accepted
time: 131ms
memory: 71500kb
input:
1003 7 amhy ncfsepqjimkaxkvlsqw bgk ncfsepqjim n amhyderccfrcdclbgrhxospemrlwctcnogb ncfsepqjimkaxkvlsqwzxubaz 15 ul k cqm kuixi ovrwzbvkvkzfuqtxooevyvuayhupn o kuixi ulihj k k kzlmrtwddplvqvakmeda ku k kzlmrtwddplvqvakmeda k 15 mf dwhth cwkbrvykvcvqltdovbcy dwhth dwht dwhth cwkbrvykvcvqltdovbcy dwh...
output:
4 58 203 10 8614 17 20 0 0 4 43987 18 164 144 35 412 3 19 20 51 50 0 4 16 37 1 4 14 8 526 197 71 20 26 20 35 55 16 0 3667 274 2024 4 33 19492 435 1 2 10 10 22631 32 690 1 0 13 166 561 6 67 10 33 286 4 1 89 11 18 12266 26 23 280 286 16 400 102 0 10 46 40 1 84 27 14 5699 105 197 39 818 36 6 29491 4 17...
result:
ok 1003 lines
Test #14:
score: -100
Wrong Answer
time: 132ms
memory: 71440kb
input:
1003 36 dv d dvgsku dv d d dv dv d d dv dvg dvgs dvgsku dv d d dv d d nwitakortf dv dv dvg d dvg dv d tksvgjqlfzdolvno d d dvg dv dv dvgsku dv 6 w oursusfeydeqnv wdrteonpibjzxvhzvqbytajwkgqwmucrzemrfowydhkkd wdrteonpibjzxvhzvqb wdrteo wdrteo 11 crmoyb c crmo wkyxgzsh cr flnsuvxkaqknoofhjdackgvavroh ...
output:
1840 19 9 370 7 31 892 504 6 56 150 209 41 0 255 221 1 7670 0 14 638 3 100 1365 17 3 20 16 74 20 15 496 3270 16 0 62 2 345 1 65 2277 0 1 39 0 0 1 2381 707 152 8485 289 109 2066 2803 38 197 1 46 38 44 323 14 1 10 98 2 116 38 82 0 56 2220 4 10 1879 29 241 65 17 7 10 6 8 162 20 9 2 10 4 4 0 4 76 50 194...
result:
wrong answer 894th lines differ - expected: '7', found: '8'