Tsukihjy/testcase / testcase-data /Ours /wrong-code-to-fix-v23-sections2-fixed.json
Tsukihjy's picture
download
raw
309 kB
[
{
"code_id": 0,
"code": "// {'input': 'begintheescapexecutionatthebreakofdawn\\n2\\nescape\\nexecution', 'output': 'beginthatthebreakofdawn'} \n#include<cstdio>\n\n#include<cstring>\n\nusing namespace std;\n\nconst int MAXN=1e5+5;\n\nint n,tot;\n\nchar s[MAXN],stk[MAXN],ch[MAXN];\n\nstruct AhoC{\n\n\tint hd,tl,que[MAXN],Son[MAXN][26],L[MAXN],pre[MAXN],P[MAXN],cnt;\n\n\tbool W[MAXN];\n\n\tint get(char ch){return ch-'a';}\n\n\tvoid Insert(char *s,int i){\n\n\t\tint Now=0,Len=strlen(s);\n\n\t\tfor(int i=0,w;i<Len;i++){\n\n\t\t\tif(!Son[Now][w=get(s[i])]) Son[Now][w]=++cnt;\n\n\t\t\tNow=Son[Now][w];\n\n\t\t}\n\n\t\tW[Now]=1,L[Now]=Len;\n\n\t}\n\n\tvoid Build(){\n\n\t\thd=tl=0;\n\n\t\tfor(int i=0;i<26;i++) if(Son[0][i]) que[++tl]=Son[0][i];\n\n\t\twhile(hd^tl){\n\n\t\t\tint x=que[++hd];\n\n\t\t\tfor(int i=0;i<26;i++)\n\n\t\t\tif(Son[x][i]){\n\n\t\t\t\tint f=pre[x];\n\n\t\t\t\twhile(f&&!Son[f][i]) f=pre[f];\n\n\t\t\t\tpre[que[++tl]=Son[x][i]]=Son[f][i];\n\n\t\t\t}else Son[x][i]=Son[pre[x]][i];\n\n\t\t}\n\n\t}\n\n\tvoid Work(){\n\n\t\tint Len=strlen(s),Now=0;\n\n\t\tfor(int i=0,w;i<Len;i++){\n\n\t\t\tNow=P[tot],w=get(stk[++tot]=s[i]);\n\n\t\t\twhile(!Son[Now][w]&&Now) Now=pre[Now];\n\n\t\t\tif(Son[Now][w]){\n\n\t\t\t\tNow=Son[Now][w],P[tot]=Now;\n\n\t\t\t\tif(W[Now]) tot-=L[Now];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}Tre;\n\nint main(){\n\n\t// #ifndef ONLINE_JUDGE\n\n\t// freopen(\"prob.in\",\"r\",stdin);\n\n\t// freopen(\"prob.out\",\"w\",stdout);\n\n\t// #endif\n\n\tscanf(\"%s%d\",s,&n);\n\n\tfor(int i=1;i<=n;i++) scanf(\"%s\",ch),Tre.Insert(ch,i);\n\n\tTre.Build();Tre.Work();\n\n\tfor(int i=1;i<=tot;i++) putchar(stk[i]);\n\n\tputchar('\\n');\n\n\treturn 0;\n\n} ",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "Censoring",
"query": "# Censoring\n## 题目描述\n有一个长度不超过 $10^5$ 的字符串 $S$。Farmer John 希望在 $S$ 中删掉 $n$ 个屏蔽词(一个屏蔽词可能出现多次),这些词记为 $t_1\\sim t_n$。\r\n\r\nFJ 在 $S$ 中从头开始寻找屏蔽词,一旦找到一个屏蔽词,FJ 就删除它,然后又从头开始寻找(而不是接着往下找)。FJ 会重复这一过程,直到 $S$ 中没有屏蔽词为止。注意删除一个单词后可能会导致 $S$ 中出现另一个屏蔽词。这 $n$ 个屏蔽词不会出现一个单词是另一个单词子串的情况,这意味着每个屏蔽词在 $S$ 中出现的开始位置是互不相同的,请帮助 FJ 完成这些操作并输出最后的 $S$。\n## 输入格式\n第一行包含一个字符串 $S$; \r\n第二行包含一个整数 $n$; \r\n接下来的 $n$ 行,每行包含一个字符串,第 $i$ 行的字符串是 $t_i$。\n## 输出格式\n一行,输出操作后的 $S$。保证 $S$ 不会变成空串。\n## 样例\n输入:\nbegintheescapexecutionatthebreakofdawn\n2\nescape\nexecution\n输出:\nbeginthatthebreakofdawn\n\n\n## 数据范围与提示\n对于全部数据,$1\\le \\sum |t_i|\\le 10^5,1\\le |S|\\le 10^5$,保证所有字符串只出现小写字母。",
"test": {
"input": "begintheescapexecutionatthebreakofdawn\n2\nescape\nexecution",
"output": "beginthatthebreakofdawn"
}
},
{
"code_id": 0,
"code": "#include<bits/stdc++.h>\nusing namespace std;\nchar s[1000015];\nint nxt[1000015];\nint main()\n{\n\twhile(1){\n\tscanf(\"%s\",s+1);\n\tif(s[1]=='.') return 0;\n\tint len=strlen(s+1);\n\tint j=0;\n\tfor(int i=2;i<=len;i++){\n\t\twhile(s[i]!=s[j+1]&&j)j--;\n\t\tif(s[i]==s[j+1])j++;\n\t\tnxt[i]=j;\n\t}\n\tprintf(\"%d\\n\",len/(len-nxt[len]));\n\t}\n}",
"status": [
"CE"
],
"details": [
"/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp: In function ‘int main()’:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:10: error: no match for ‘operator>>’ (operand types are ‘std::istream’ {aka ‘std::basic_istream<char>’} and ‘char*’)\n 7 | while(cin>>s+1){\n | ~~~^~~~~\n | | |\n | | char*\n | std::istream {aka std::basic_istream<char>}\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:168:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 168 | operator>>(bool& __n)\n | ^~~~~~~~\n/usr/include/c++/11/istream:168:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind non-const lvalue reference of type ‘bool&’ to a value of type ‘char*’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:172:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match)\n 172 | operator>>(short& __n);\n | ^~~~~~~~\n/usr/include/c++/11/istream:172:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘short int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(short int)(((char*)(& s)) + 1)’ to ‘short int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:175:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 175 | operator>>(unsigned short& __n)\n | ^~~~~~~~\n/usr/include/c++/11/istream:175:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘short unsigned int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(short unsigned int)(((char*)(& s)) + 1)’ to ‘short unsigned int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:179:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]’ (near match)\n 179 | operator>>(int& __n);\n | ^~~~~~~~\n/usr/include/c++/11/istream:179:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(int)(((char*)(& s)) + 1)’ to ‘int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:182:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 182 | operator>>(unsigned int& __n)\n | ^~~~~~~~\n/usr/include/c++/11/istream:182:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘unsigned int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(unsigned int)(((char*)(& s)) + 1)’ to ‘unsigned int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:186:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 186 | operator>>(long& __n)\n | ^~~~~~~~\n/usr/include/c++/11/istream:186:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘long int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(long int)(((char*)(& s)) + 1)’ to ‘long int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:190:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 190 | operator>>(unsigned long& __n)\n | ^~~~~~~~\n/usr/include/c++/11/istream:190:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘long unsigned int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(long unsigned int)(((char*)(& s)) + 1)’ to ‘long unsigned int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:195:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 195 | operator>>(long long& __n)\n | ^~~~~~~~\n/usr/include/c++/11/istream:195:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘long long int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(long long int)(((char*)(& s)) + 1)’ to ‘long long int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:199:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 199 | operator>>(unsigned long long& __n)\n | ^~~~~~~~\n/usr/include/c++/11/istream:199:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: invalid conversion from ‘char*’ to ‘long long unsigned int’ [-fpermissive]\n 7 | while(cin>>s+1){\n | ~^~\n | |\n | char*\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind rvalue ‘(long long unsigned int)(((char*)(& s)) + 1)’ to ‘long long unsigned int&’\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:235:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’ (near match)\n 235 | operator>>(void*& __p)\n | ^~~~~~~~\n/usr/include/c++/11/istream:235:7: note: conversion of argument 1 would be ill-formed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: error: cannot bind non-const lvalue reference of type ‘void*&’ to an rvalue of type ‘void*’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:120:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’\n 120 | operator>>(__istream_type& (*__pf)(__istream_type&))\n | ^~~~~~~~\n/usr/include/c++/11/istream:120:36: note: no known conversion for argument 1 from ‘char*’ to ‘std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)’ {aka ‘std::basic_istream<char>& (*)(std::basic_istream<char>&)’}\n 120 | operator>>(__istream_type& (*__pf)(__istream_type&))\n | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/istream:124:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]’\n 124 | operator>>(__ios_type& (*__pf)(__ios_type&))\n | ^~~~~~~~\n/usr/include/c++/11/istream:124:32: note: no known conversion for argument 1 from ‘char*’ to ‘std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&)’ {aka ‘std::basic_ios<char>& (*)(std::basic_ios<char>&)’}\n 124 | operator>>(__ios_type& (*__pf)(__ios_type&))\n | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/istream:131:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’\n 131 | operator>>(ios_base& (*__pf)(ios_base&))\n | ^~~~~~~~\n/usr/include/c++/11/istream:131:30: note: no known conversion for argument 1 from ‘char*’ to ‘std::ios_base& (*)(std::ios_base&)’\n 131 | operator>>(ios_base& (*__pf)(ios_base&))\n | ~~~~~~~~~~~~^~~~~~~~~~~~~~~~\n/usr/include/c++/11/istream:214:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’\n 214 | operator>>(float& __f)\n | ^~~~~~~~\n/usr/include/c++/11/istream:214:25: note: no known conversion for argument 1 from ‘char*’ to ‘float&’\n 214 | operator>>(float& __f)\n | ~~~~~~~^~~\n/usr/include/c++/11/istream:218:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’\n 218 | operator>>(double& __f)\n | ^~~~~~~~\n/usr/include/c++/11/istream:218:26: note: no known conversion for argument 1 from ‘char*’ to ‘double&’\n 218 | operator>>(double& __f)\n | ~~~~~~~~^~~\n/usr/include/c++/11/istream:222:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]’\n 222 | operator>>(long double& __f)\n | ^~~~~~~~\n/usr/include/c++/11/istream:222:31: note: no known conversion for argument 1 from ‘char*’ to ‘long double&’\n 222 | operator>>(long double& __f)\n | ~~~~~~~~~~~~~^~~\n/usr/include/c++/11/istream:259:7: note: candidate: ‘std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]’\n 259 | operator>>(__streambuf_type* __sb);\n | ^~~~~~~~\n/usr/include/c++/11/istream:259:36: note: no known conversion for argument 1 from ‘char*’ to ‘std::basic_istream<char>::__streambuf_type*’ {aka ‘std::basic_streambuf<char>*’}\n 259 | operator>>(__streambuf_type* __sb);\n | ~~~~~~~~~~~~~~~~~~^~~~\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:45,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/cstddef:132:5: note: candidate: ‘template<class _IntegerType> constexpr std::__byte_op_t<_IntegerType> std::operator>>(std::byte, _IntegerType)’\n 132 | operator>>(byte __b, _IntegerType __shift) noexcept\n | ^~~~~~~~\n/usr/include/c++/11/cstddef:132:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:7: note: cannot convert ‘std::cin’ (type ‘std::istream’ {aka ‘std::basic_istream<char>’}) to type ‘std::byte’\n 7 | while(cin>>s+1){\n | ^~~\nIn file included from /usr/include/c++/11/string:56,\n from /usr/include/c++/11/bits/locale_classes.h:40,\n from /usr/include/c++/11/bits/ios_base.h:41,\n from /usr/include/c++/11/ios:42,\n from /usr/include/c++/11/istream:38,\n from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/basic_string.tcc:1485:5: note: candidate: ‘template<class _CharT, class _Traits, class _Alloc> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)’\n 1485 | operator>>(basic_istream<_CharT, _Traits>& __in,\n | ^~~~~~~~\n/usr/include/c++/11/bits/basic_string.tcc:1485:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::__cxx11::basic_string<_CharT, _Traits, _Allocator>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/istream:1016,\n from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/istream.tcc:958:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT&)’\n 958 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)\n | ^~~~~~~~\n/usr/include/c++/11/bits/istream.tcc:958:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: deduced conflicting types for parameter ‘_CharT’ (‘char’ and ‘char*’)\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:756:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)’\n 756 | operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)\n | ^~~~~~~~\n/usr/include/c++/11/istream:756:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘unsigned char&’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:761:5: note: candidate: ‘template<class _Traits> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char&)’\n 761 | operator>>(basic_istream<char, _Traits>& __in, signed char& __c)\n | ^~~~~~~~\n/usr/include/c++/11/istream:761:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘signed char&’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:859:5: note: candidate: ‘template<class _CharT, class _Traits, long unsigned int _Num> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, _CharT (&)[_Num])’\n 859 | operator>>(basic_istream<_CharT, _Traits>& __in, _CharT (&__s)[_Num])\n | ^~~~~~~~\n/usr/include/c++/11/istream:859:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘_CharT [_Num]’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:868:5: note: candidate: ‘template<class _Traits, long unsigned int _Num> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, unsigned char (&)[_Num])’\n 868 | operator>>(basic_istream<char, _Traits>& __in, unsigned char (&__s)[_Num])\n | ^~~~~~~~\n/usr/include/c++/11/istream:868:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘unsigned char [_Num]’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:873:5: note: candidate: ‘template<class _Traits, long unsigned int _Num> std::basic_istream<char, _Traits>& std::operator>>(std::basic_istream<char, _Traits>&, signed char (&)[_Num])’\n 873 | operator>>(basic_istream<char, _Traits>& __in, signed char (&__s)[_Num])\n | ^~~~~~~~\n/usr/include/c++/11/istream:873:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘signed char [_Num]’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/istream:1006:5: note: candidate: ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&)’\n 1006 | operator>>(_Istream&& __is, _Tp&& __x)\n | ^~~~~~~~\n/usr/include/c++/11/istream:1006:5: note: template argument deduction/substitution failed:\n/usr/include/c++/11/istream: In substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*]’:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: required from here\n/usr/include/c++/11/istream:1006:5: error: template constraint failure for ‘template<class _Is, class _Tp> requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using __rvalue_stream_extraction_t = _Is&&’\n/usr/include/c++/11/istream:1006:5: note: constraints not satisfied\nIn file included from /usr/include/c++/11/istream:39,\n from /usr/include/c++/11/sstream:38,\n from /usr/include/c++/11/complex:45,\n from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/ostream: In substitution of ‘template<class _Is, class _Tp> requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using __rvalue_stream_extraction_t = _Is&& [with _Is = std::basic_istream<char>&; _Tp = char*]’:\n/usr/include/c++/11/istream:1006:5: required by substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*]’\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: required from here\n/usr/include/c++/11/ostream:717:13: required for the satisfaction of ‘__derived_from_ios_base<_Is>’ [with _Is = std::basic_istream<char, std::char_traits<char> >&]\n/usr/include/c++/11/ostream:717:39: note: the expression ‘is_class_v<_Tp> [with _Tp = std::basic_istream<char, std::char_traits<char> >&]’ evaluated to ‘false’\n 717 | concept __derived_from_ios_base = is_class_v<_Tp>\n | ^~~~~~~~~~~~~~~\nIn file included from /usr/include/c++/11/ccomplex:39,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/complex:501:5: note: candidate: ‘template<class _Tp, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::complex<_Tp>&)’\n 501 | operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x)\n | ^~~~~~~~\n/usr/include/c++/11/complex:501:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::complex<_Tp>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:66,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bitset:1472:5: note: candidate: ‘template<class _CharT, class _Traits, long unsigned int _Nb> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::bitset<_Nb>&)’\n 1472 | operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)\n | ^~~~~~~~\n/usr/include/c++/11/bitset:1472:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::bitset<_Nb>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:71:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Resetiosflags)’\n 71 | operator>>(basic_istream<_CharT, _Traits>& __is, _Resetiosflags __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:71:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘std::_Resetiosflags’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:101:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Setiosflags)’\n 101 | operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:101:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘std::_Setiosflags’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:132:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Setbase)’\n 132 | operator>>(basic_istream<_CharT, _Traits>& __is, _Setbase __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:132:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘std::_Setbase’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:170:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Setfill<_CharT>)’\n 170 | operator>>(basic_istream<_CharT, _Traits>& __is, _Setfill<_CharT> __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:170:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::_Setfill<_CharT>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:200:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Setprecision)’\n 200 | operator>>(basic_istream<_CharT, _Traits>& __is, _Setprecision __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:200:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘std::_Setprecision’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:230:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Setw)’\n 230 | operator>>(basic_istream<_CharT, _Traits>& __is, _Setw __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:230:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘std::_Setw’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:264:5: note: candidate: ‘template<class _CharT, class _Traits, class _MoneyT> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Get_money<_MoneyT>)’\n 264 | operator>>(basic_istream<_CharT, _Traits>& __is, _Get_money<_MoneyT> __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:264:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::_Get_money<_MoneyT>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:72,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/iomanip:418:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::_Get_time<_CharT>)’\n 418 | operator>>(basic_istream<_CharT, _Traits>& __is, _Get_time<_CharT> __f)\n | ^~~~~~~~\n/usr/include/c++/11/iomanip:418:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::_Get_time<_CharT>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/valarray:603,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: candidate: ‘template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__shift_right, typename _Dom1::value_type>::result_type> std::operator>>(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)’\n 414 | _DEFINE_EXPR_BINARY_OPERATOR(>>, struct std::__shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: ‘std::istream’ {aka ‘std::basic_istream<char>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/valarray:603,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__shift_right, typename _Dom1::value_type>::result_type> std::operator>>(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)’\n 414 | _DEFINE_EXPR_BINARY_OPERATOR(>>, struct std::__shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: ‘std::istream’ {aka ‘std::basic_istream<char>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/valarray:603,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__shift_right, typename _Dom1::value_type>::result_type> std::operator>>(const typename _Dom::value_type&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)’\n 414 | _DEFINE_EXPR_BINARY_OPERATOR(>>, struct std::__shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/valarray:603,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__shift_right, typename _Dom1::value_type>::result_type> std::operator>>(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)’\n 414 | _DEFINE_EXPR_BINARY_OPERATOR(>>, struct std::__shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: ‘std::istream’ {aka ‘std::basic_istream<char>’} is not derived from ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/valarray:603,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: candidate: ‘template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__shift_right, typename _Dom1::value_type>::result_type> std::operator>>(const std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)’\n 414 | _DEFINE_EXPR_BINARY_OPERATOR(>>, struct std::__shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/bits/valarray_after.h:414:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘const std::_Expr<_Dom1, typename _Dom1::value_type>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/valarray:1195:1: note: candidate: ‘template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__shift_right, _Tp>::result_type> std::operator>>(const std::valarray<_Tp>&, const std::valarray<_Tp>&)’\n 1195 | _DEFINE_BINARY_OPERATOR(>>, __shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/valarray:1195:1: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: ‘std::istream’ {aka ‘std::basic_istream<char>’} is not derived from ‘const std::valarray<_Tp>’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/valarray:1195:1: note: candidate: ‘template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__shift_right, _Tp>::result_type> std::operator>>(const std::valarray<_Tp>&, const typename std::valarray<_Tp>::value_type&)’\n 1195 | _DEFINE_BINARY_OPERATOR(>>, __shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/valarray:1195:1: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: ‘std::istream’ {aka ‘std::basic_istream<char>’} is not derived from ‘const std::valarray<_Tp>’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/valarray:1195:1: note: candidate: ‘template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__shift_right, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__shift_right, _Tp>::result_type> std::operator>>(const typename std::valarray<_Tp>::value_type&, const std::valarray<_Tp>&)’\n 1195 | _DEFINE_BINARY_OPERATOR(>>, __shift_right)\n | ^~~~~~~~~~~~~~~~~~~~~~~\n/usr/include/c++/11/valarray:1195:1: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘const std::valarray<_Tp>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:921:5: note: candidate: ‘template<class _IntType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::uniform_int_distribution<_IntType>&)’\n 921 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:921:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::uniform_int_distribution<_IntType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:982:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::uniform_real_distribution<_IntType>&)’\n 982 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:982:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::uniform_real_distribution<_IntType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2167:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::cauchy_distribution<_RealType>&)’\n 2167 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2167:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::cauchy_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:49,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.h:3722:5: note: candidate: ‘template<class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::bernoulli_distribution&)’\n 3722 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.h:3722:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:13: note: cannot convert ‘(((char*)(& s)) + 1)’ (type ‘char*’) to type ‘std::bernoulli_distribution&’\n 7 | while(cin>>s+1){\n | ~^~\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:1124:5: note: candidate: ‘template<class _IntType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::geometric_distribution<_IntType>&)’\n 1124 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:1124:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::geometric_distribution<_IntType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:1775:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::exponential_distribution<_RealType>&)’\n 1775 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:1775:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::exponential_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2561:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::weibull_distribution<_RealType>&)’\n 2561 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2561:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::weibull_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2635:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::extreme_value_distribution<_RealType>&)’\n 2635 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2635:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::extreme_value_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:175:5: note: candidate: ‘template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::linear_congruential_engine<_UIntType, __a, __c, __m>&)’\n 175 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:175:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::linear_congruential_engine<_UIntType, __a, __c, __m>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:501:5: note: candidate: ‘template<class _UIntType1, long unsigned int __w1, long unsigned int __n1, long unsigned int __m1, long unsigned int __r1, _UIntType1 __a1, long unsigned int __u1, _UIntType1 __d1, long unsigned int __s1, _UIntType1 __b1, long unsigned int __t1, _UIntType1 __c1, long unsigned int __l1, _UIntType1 __f1, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>&)’\n 501 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:501:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:652:5: note: candidate: ‘template<class _UIntType, long unsigned int __w, long unsigned int __s, long unsigned int __r, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::subtract_with_carry_engine<_UIntType, __w, __s, __r>&)’\n 652 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:652:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::subtract_with_carry_engine<_UIntType, __w, __s, __r>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:718:5: note: candidate: ‘template<class _RandomNumberEngine, long unsigned int __p, long unsigned int __r, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::discard_block_engine<_RandomNumberEngine, __p, __r>&)’\n 718 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:718:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::discard_block_engine<_RandomNumberEngine, __p, __r>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:881:5: note: candidate: ‘template<class _RandomNumberEngine, long unsigned int __k, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::shuffle_order_engine<_RandomNumberEngine, __k>&)’\n 881 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:881:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::shuffle_order_engine<_RandomNumberEngine, __k>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:1239:5: note: candidate: ‘template<class _IntType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::negative_binomial_distribution<_IntType>&)’\n 1239 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:1239:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::negative_binomial_distribution<_IntType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:1449:5: note: candidate: ‘template<class _IntType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::poisson_distribution<_IntType>&)’\n 1449 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:1449:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::poisson_distribution<_IntType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:1716:5: note: candidate: ‘template<class _IntType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::binomial_distribution<_IntType>&)’\n 1716 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:1716:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::binomial_distribution<_IntType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:1945:5: note: candidate: ‘template<class _RealType1, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::normal_distribution<_RealType>&)’\n 1945 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:1945:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::normal_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2010:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::lognormal_distribution<_RealType>&)’\n 2010 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2010:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::lognormal_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2081:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::chi_squared_distribution<_RealType>&)’\n 2081 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2081:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::chi_squared_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2243:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::fisher_f_distribution<_RealType>&)’\n 2243 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2243:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::fisher_f_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2316:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::student_t_distribution<_RealType>&)’\n 2316 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2316:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::student_t_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2486:5: note: candidate: ‘template<class _RealType1, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::gamma_distribution<_RealType>&)’\n 2486 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2486:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::gamma_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:2794:5: note: candidate: ‘template<class _IntType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::discrete_distribution<_IntType>&)’\n 2794 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:2794:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::discrete_distribution<_IntType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:3001:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::piecewise_constant_distribution<_RealType>&)’\n 3001 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:3001:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::piecewise_constant_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\nIn file included from /usr/include/c++/11/random:51,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:108,\n from /tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:1:\n/usr/include/c++/11/bits/random.tcc:3207:5: note: candidate: ‘template<class _RealType, class _CharT, class _Traits> std::basic_istream<_CharT, _Traits>& std::operator>>(std::basic_istream<_CharT, _Traits>&, std::piecewise_linear_distribution<_RealType>&)’\n 3207 | operator>>(std::basic_istream<_CharT, _Traits>& __is,\n | ^~~~~~~~\n/usr/include/c++/11/bits/random.tcc:3207:5: note: template argument deduction/substitution failed:\n/tmp/_my_pojqy4nz7e8/3d009f06-5edd-47cf-ab80-0f10f50a92d5.cpp:7:14: note: mismatched types ‘std::piecewise_linear_distribution<_RealType>’ and ‘char*’\n 7 | while(cin>>s+1){\n | ^\n"
],
"tcb_id": "Power Strings",
"query": "# Power Strings\n题目描述\r\n\r\n给定若干个长度 $ \\le 10^6 $ 的字符串,询问每个字符串最多是由多少个相同的子字符串重复连接而成的。如:`ababab` 则最多有 $3$ 个 `ab` 连接而成。\n## 输入格式\n输入若干行,每行有一个字符串。特别的,字符串可能为 `.` 即一个半角句号,此时输入结束。\n## 样例\n输入:\nabcd\naaaa\nababab\n.\n输出:\n1\n4\n3\n\n\n## 数据范围与提示\n字符串长度 $ \\le 10^6 $。",
"test": {
"input": "abcd\naaaa\nababab\n.",
"output": "1\n4\n3"
}
},
{
"code_id": 0,
"code": "// {'input': '1 3\\n3 3\\n- 2 1\\n- 3 2\\n+ 1 3\\n3 3\\n- 2 1\\n- 3 2\\n- 1 3\\n2 2\\nT 2\\nU 2\\n', 'output': '0\\n3\\n1\\n'} \n#include<bits/stdc++.h>\nusing namespace std;\n#define ll long long\nconst int N=1e6+10;\n#define ls u<<1\n#define rs u<<1|1\nint n,m,a[N],b[N],ck[N][2],mn,c,t,ans;\nint read();\nchar s[N];\nvoid dfs(int dep){\n\tif(dep==n+1){\n\t\tint num=0;\n\t\tfor(int i=1;i<=n;++i)b[i]=a[i];\n\t\tfor(int i=1;i<=m;++i){\n\t\t\tif(s[i]=='+'){\n\t\t\t\tb[ck[i][0]]=b[ck[i][1]];\n\t\t\t}\n\t\t\telse if(s[i]=='-'){\n\t\t\t\tb[ck[i][0]]=-b[ck[i][1]];\n\t\t\t}\n\t\t\telse if(s[i]=='T')b[ck[i][0]]=1;\n\t\t\telse if(s[i]=='F')b[ck[i][0]]=-1;\n\t\t\telse b[ck[i][0]]=0;\n\t\t}\n\t\tfor(int i=1;i<=n;++i){\n\t\t\tif(b[i]==0)num++;\n\t\t\tif(a[i]!=b[i])return;\n\t\t}\n\t\tmn=min(num,mn);\n\t\treturn;\n\t}\n\tfor(int i=-1;i<=1;++i){\n\t\ta[dep]=i;\n\t\tdfs(dep+1);\n\t}\n}\nint main(){\n\t// freopen(\"tribool.in\",\"r\",stdin);\n\t// freopen(\"tribool.out\",\"w\",stdout);\n\tcin>>c>>t;\n\tif(c<=2){\n\t\tfor(int i=1;i<=t;++i){\n\t\t\tmn=1e9;\n\t\t\tcin>>n>>m;\n\t\t\tfor(int i=1;i<=m;++i){\n\t\t\t\tscanf(\" %c\",&s[i]);\n\t\t\t\tif(s[i]=='+'||s[i]=='-'){\n\t\t\t\t\tck[i][0]=read(),ck[i][1]=read();\n\t\t\t\t}\n\t\t\t\telse ck[i][0]=read();\n\t\t\t}\n\t\t\tdfs(1);\n\t\t\tcout<<mn<<endl;\n\t\t}\n\t}\n\telse if(c<=4){\n\t\tfor(int i=1;i<=t;++i){\n\t\t\tans=0;\n\t\t\tcin>>n>>m;\n\t\t\tfor(int i=1;i<=n;++i)a[i]=0;\n\t\t\tfor(int i=1;i<=m;++i){\n\t\t\t\tscanf(\" %c\",&s[i]);\n\t\t\t\tint u=read();\n\t\t\t\tif(s[i]=='U')a[u]=1;\n\t\t\t\telse a[u]=0;\n\t\t\t}\n\t\t\tfor(int i=1;i<=n;++i)ans+=a[i];\n\t\t\tcout<<ans<<endl;\n\t\t}\n\t}\n\t\n}\nint read(){\n\tint f=1,x=0;\n\tchar ch=getchar();\n\twhile(ch<'0'||ch>'9'){\n\t\tif(ch=='-')f=-1;\n\t\tch=getchar();\n\t}\n\twhile(ch>='0'&&ch<='9'){\n\t\tx=x*10+(ch^48);\n\t\tch=getchar();\n\t}\n\treturn f*x;\n}\n\n\n",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "三值逻辑",
"query": "# 三值逻辑\n## 题目描述\n小 L 今天学习了 Kleene 三值逻辑。\n\n在三值逻辑中,一个变量的值可能为:真($\\mathit{True}$,简写作 $\\mathit{T}$)、假($\\mathit{False}$,简写作 $\\mathit{F}$)或未确定($\\mathit{Unknown}$,简写作 $\\mathit{U}$)。\n\n在三值逻辑上也可以定义逻辑运算。由于小 L 学习进度很慢,只掌握了逻辑非运算 $\\lnot$,其运算法则为:\n\n$$\\lnot \\mathit{T} = \\mathit{F}, \\lnot \\mathit{F} = \\mathit{T}, \\lnot\\mathit{U} = \\mathit{U}.$$\n\n现在小 L 有 $n$ 个三值逻辑变量 $x_1,\\cdots, x_n$。小 L 想进行一些有趣的尝试,于是他写下了 $m$ 条语句。语句有以下三种类型,其中 $\\leftarrow$ 表示赋值:\n\n1. $x_i \\leftarrow v$,其中 $v$ 为 $\\mathit{T}, \\mathit{F}, \\mathit{U}$ 的一种;\n2. $x_i \\leftarrow x_j$;\n3. $x_i \\leftarrow \\lnot x_j$。\n\n一开始,小 L 会给这些变量赋初值,然后按顺序运行这 $m$ 条语句。\n\n小 L 希望执行了所有语句后,所有变量的最终值与初值都相等。在此前提下,小 L 希望初值中 $\\mathit{Unknown}$ 的变量尽可能少。\n\n在本题中,你需要帮助小 L 找到 $\\mathit{Unknown}$ 变量个数最少的赋初值方案,使得执行了所有语句后所有变量的最终值和初始值相等。小 L 保证,至少对于本题的所有测试用例,这样的赋初值方案都必然是存在的。\n## 输入格式\n\n**本题的测试点包含有多组测试数据。**\n\n输入的第一行包含两个整数 $c$ 和 $t$,分别表示测试点编号和测试数据组数。对于样例,$c$ 表示该样例与测试点 $c$ 拥有相同的限制条件。\n\n接下来,对于每组测试数据:\n\n- 输入的第一行包含两个整数 $n$ 和 $m$,分别表示变量个数和语句条数。\n- 接下来 $m$ 行,按运行顺序给出每条语句。\n - 输入的第一个字符 $v$ 描述这条语句的类型。保证 $v$ 为 `TFU+-` 的其中一种。\n - 若 $v$ 为 `TFU` 的某一种时,接下来给出一个整数 $i$,表示该语句为 $x_i \\leftarrow v$;\n - 若 $v$ 为 `+`,接下来给出两个整数 $i,j$,表示该语句为 $x_i \\leftarrow x_j$;\n - 若 $v$ 为 `-`,接下来给出两个整数 $i,j$,表示该语句为 $x_i \\leftarrow \\lnot x_j$。\n## 输出格式\n\n对于每组测试数据输出一行一个整数,表示所有符合条件的赋初值方案中,$\\mathit{Unknown}$ 变量个数的最小值。\n## 样例\n### 样例 1\n输入:\n1 3\n3 3\n- 2 1\n- 3 2\n+ 1 3\n3 3\n- 2 1\n- 3 2\n- 1 3\n2 2\nT 2\nU 2\n\n输出:\n0\n3\n1\n\n\n第一组测试数据中,$m$ 行语句依次为\n\n- $x_2 \\leftarrow \\lnot x_1$;\n- $x_3 \\leftarrow \\lnot x_2$;\n- $x_1 \\leftarrow x_3$。\n\n一组合法的赋初值方案为 $x_1 = \\mathit{T}, x_2 = \\mathit{F}, x_3 = \\mathit{T}$,共有 $0$ 个$\\mathit{Unknown}$ 变量。因为不存在赋初值方案中有小于 $0$ 个$\\mathit{Unknown}$ 变量,故输出为 $0$。\n\n第二组测试数据中,$m$ 行语句依次为\n\n- $x_2 \\leftarrow \\lnot x_1$;\n- $x_3 \\leftarrow \\lnot x_2$;\n- $x_1 \\leftarrow \\lnot x_3$。\n\n唯一的赋初值方案为 $x_1 = x_2 = x_3 = \\mathit{U}$,共有 $3$ 个$\\mathit{Unknown}$ 变量,故输出为 $3$。\n\n第三组测试数据中,$m$ 行语句依次为\n\n- $x_2 \\leftarrow \\mathit{T}$;\n- $x_2 \\leftarrow \\mathit{U}$;\n\n一个最小化 $\\mathit{Unknown}$ 变量个数的赋初值方案为 $x_1 = \\mathit{T}, x_2 = \\mathit{U}$。$x_1 = x_2 = \\mathit{U}$ 也是一个合法的方案,但它没有最小化 $\\mathit{Unknown}$ 变量的个数。\n## 数据范围与提示\n对于所有测试数据,保证:\n\n- $1 \\le t \\le 6$,$1 \\le n,m \\le 10 ^ 5$;\n- 对于每个操作,$v$ 为 `TFU+-` 中的某个字符,$1 \\le i,j \\le n$。\n\n",
"test": {
"input": "1 3\n3 3\n- 2 1\n- 3 2\n+ 1 3\n3 3\n- 2 1\n- 3 2\n- 1 3\n2 2\nT 2\nU 2\n",
"output": "0\n3\n1\n"
}
},
{
"code_id": 1,
"code": "// {'input': '1 3\\n3 3\\n- 2 1\\n- 3 2\\n+ 1 3\\n3 3\\n- 2 1\\n- 3 2\\n- 1 3\\n2 2\\nT 2\\nU 2\\n', 'output': '0\\n3\\n1\\n'} \n#include <bits/stdc++.h>\nusing namespace std;\n#define ll long long\n\nconst int N = 200'005;\nint par[N], sz[N];\nint find(int u) {\n\tif (par[u] == u) {\n\t\treturn u;\n\t}\n\treturn par[u] = find(par[u]);\n}\nvoid join(int u, int v) {\n\tu = find(u), v = find(v);\n\tif (u == v) return;\n\tif (sz[u] < sz[v]) {\n\t\tswap(sz[u], sz[v]);\n\t}\n\tsz[u] += sz[v];\n\tpar[v] = u;\n}\nvector<int> adj[N];\nint col[N], cnt;\nbool isU[N], bad = 0;\nbool dfs(int i, int c) {\n\tif (col[i] != -1) {\n\t\treturn col[i] == c;\n\t}\n\tcol[i] = c;\n\tbad |= isU[i];\n\tcnt += sz[i];\n\tbool gud = 1;\n\tfor (auto nxt : adj[i]) {\n\t\tgud &= dfs(nxt, c ^ 1);\n\t}\n\treturn gud;\n}\nint main() {\n\tios_base::sync_with_stdio(0), cin.tie(0);\n// #ifndef MINA\n// \tfreopen(\"tribool.in\", \"r\", stdin);\n// \tfreopen(\"tribool.out\", \"w\", stdout);\n// #endif\n\tint ST, T;\n\tcin >> ST >> T;\n\twhile (T--) {\n\t\tint n, m;\n\t\tcin >> n >> m;\n\t\tarray<int, 2> a[n + 1];\n\t\tfor (int i = 1; i <= n; i++) {\n\t\t\ta[i] = {0, i};\n\t\t}\n\t\tfor (int _ = 0; _ < m; _++) {\n\t\t\tchar c;\n\t\t\tcin >> c;\n\t\t\tif (c == '+') {\n\t\t\t\tint i, j;\n\t\t\t\tcin >> i >> j;\n\t\t\t\ta[i] = a[j];\n\t\t\t} else if (c == '-') {\n\t\t\t\tint i, j;\n\t\t\t\tcin >> i >> j;\n\t\t\t\ta[i] = a[j];\n\t\t\t\ta[i][1] *= -1;\n\t\t\t} else {\n\t\t\t\tint i;\n\t\t\t\tcin >> i;\n\t\t\t\ta[i][0] = 1;\n\t\t\t\tif (c == 'T') {\n\t\t\t\t\ta[i][1] = 1;\n\t\t\t\t} else if (c == 'U') {\n\t\t\t\t\ta[i][1] = 0;\n\t\t\t\t} else {\n\t\t\t\t\ta[i][1] = -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (int i = 1; i <= 2 * n + 1; i++) {\n\t\t\tpar[i] = i;\n\t\t\tsz[i] = 1;\n\t\t\tadj[i].clear();\n\t\t\tcol[i] = -1;\n\t\t\tisU[i] = 0;\n\t\t}\n\t\tauto get = [&] (int x) {\n\t\t\tint v = abs(x);\n\t\t\tv *= 2;\n\t\t\tif (x < 0) v++;\n\t\t\treturn v;\n\t\t};\n\t\tfor (int i = 1; i <= n; i++) {\n\t\t\tif (a[i][0] == 0) {\n\t\t\t\tjoin(2 * i, get(a[i][1]));\n\t\t\t}\n\t\t}\n\t\tfor (int i = 1; i <= n; i++) {\n\t\t\tif (find(2 * i) == find(2 * i + 1)) {\n\t\t\t\ta[i] = {1, 0};\n\t\t\t}\n\t\t\tif (a[i] == (array<int, 2>) {1, 0}) {\n\t\t\t\tisU[2 * i] = isU[2 * i + 1] = 1;\n\t\t\t}\n\t\t}\n\t\tfor (int i = 1; i <= n; i++) {\n\t\t\tadj[find(2 * i)].push_back(find(2 * i + 1));\n\t\t\tadj[find(2 * i + 1)].push_back(find(2 * i));\n\t\t}\n\t\tint ans = 0;\n\t\tfor (int i = 1; i <= 2 * n + 1; i++) {\n\t\t\tif (par[i] != i) continue;\n\t\t\tif (col[i] != -1) continue;\n\t\t\tcnt = 0;\n\t\t\tbad = 0;\n\t\t\tif (!dfs(i, 0) || bad) {\n\t\t\t\tans += cnt / 2;\n\t\t\t}\n\t\t}\n\t\tcout << ans << '\\n';\n\t}\n\treturn 0;\n}\n\n",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "三值逻辑",
"query": "# 三值逻辑\n## 题目描述\n小 L 今天学习了 Kleene 三值逻辑。\n\n在三值逻辑中,一个变量的值可能为:真($\\mathit{True}$,简写作 $\\mathit{T}$)、假($\\mathit{False}$,简写作 $\\mathit{F}$)或未确定($\\mathit{Unknown}$,简写作 $\\mathit{U}$)。\n\n在三值逻辑上也可以定义逻辑运算。由于小 L 学习进度很慢,只掌握了逻辑非运算 $\\lnot$,其运算法则为:\n\n$$\\lnot \\mathit{T} = \\mathit{F}, \\lnot \\mathit{F} = \\mathit{T}, \\lnot\\mathit{U} = \\mathit{U}.$$\n\n现在小 L 有 $n$ 个三值逻辑变量 $x_1,\\cdots, x_n$。小 L 想进行一些有趣的尝试,于是他写下了 $m$ 条语句。语句有以下三种类型,其中 $\\leftarrow$ 表示赋值:\n\n1. $x_i \\leftarrow v$,其中 $v$ 为 $\\mathit{T}, \\mathit{F}, \\mathit{U}$ 的一种;\n2. $x_i \\leftarrow x_j$;\n3. $x_i \\leftarrow \\lnot x_j$。\n\n一开始,小 L 会给这些变量赋初值,然后按顺序运行这 $m$ 条语句。\n\n小 L 希望执行了所有语句后,所有变量的最终值与初值都相等。在此前提下,小 L 希望初值中 $\\mathit{Unknown}$ 的变量尽可能少。\n\n在本题中,你需要帮助小 L 找到 $\\mathit{Unknown}$ 变量个数最少的赋初值方案,使得执行了所有语句后所有变量的最终值和初始值相等。小 L 保证,至少对于本题的所有测试用例,这样的赋初值方案都必然是存在的。\n## 输入格式\n\n**本题的测试点包含有多组测试数据。**\n\n输入的第一行包含两个整数 $c$ 和 $t$,分别表示测试点编号和测试数据组数。对于样例,$c$ 表示该样例与测试点 $c$ 拥有相同的限制条件。\n\n接下来,对于每组测试数据:\n\n- 输入的第一行包含两个整数 $n$ 和 $m$,分别表示变量个数和语句条数。\n- 接下来 $m$ 行,按运行顺序给出每条语句。\n - 输入的第一个字符 $v$ 描述这条语句的类型。保证 $v$ 为 `TFU+-` 的其中一种。\n - 若 $v$ 为 `TFU` 的某一种时,接下来给出一个整数 $i$,表示该语句为 $x_i \\leftarrow v$;\n - 若 $v$ 为 `+`,接下来给出两个整数 $i,j$,表示该语句为 $x_i \\leftarrow x_j$;\n - 若 $v$ 为 `-`,接下来给出两个整数 $i,j$,表示该语句为 $x_i \\leftarrow \\lnot x_j$。\n## 输出格式\n\n对于每组测试数据输出一行一个整数,表示所有符合条件的赋初值方案中,$\\mathit{Unknown}$ 变量个数的最小值。\n## 样例\n### 样例 1\n输入:\n1 3\n3 3\n- 2 1\n- 3 2\n+ 1 3\n3 3\n- 2 1\n- 3 2\n- 1 3\n2 2\nT 2\nU 2\n\n输出:\n0\n3\n1\n\n\n第一组测试数据中,$m$ 行语句依次为\n\n- $x_2 \\leftarrow \\lnot x_1$;\n- $x_3 \\leftarrow \\lnot x_2$;\n- $x_1 \\leftarrow x_3$。\n\n一组合法的赋初值方案为 $x_1 = \\mathit{T}, x_2 = \\mathit{F}, x_3 = \\mathit{T}$,共有 $0$ 个$\\mathit{Unknown}$ 变量。因为不存在赋初值方案中有小于 $0$ 个$\\mathit{Unknown}$ 变量,故输出为 $0$。\n\n第二组测试数据中,$m$ 行语句依次为\n\n- $x_2 \\leftarrow \\lnot x_1$;\n- $x_3 \\leftarrow \\lnot x_2$;\n- $x_1 \\leftarrow \\lnot x_3$。\n\n唯一的赋初值方案为 $x_1 = x_2 = x_3 = \\mathit{U}$,共有 $3$ 个$\\mathit{Unknown}$ 变量,故输出为 $3$。\n\n第三组测试数据中,$m$ 行语句依次为\n\n- $x_2 \\leftarrow \\mathit{T}$;\n- $x_2 \\leftarrow \\mathit{U}$;\n\n一个最小化 $\\mathit{Unknown}$ 变量个数的赋初值方案为 $x_1 = \\mathit{T}, x_2 = \\mathit{U}$。$x_1 = x_2 = \\mathit{U}$ 也是一个合法的方案,但它没有最小化 $\\mathit{Unknown}$ 变量的个数。\n## 数据范围与提示\n对于所有测试数据,保证:\n\n- $1 \\le t \\le 6$,$1 \\le n,m \\le 10 ^ 5$;\n- 对于每个操作,$v$ 为 `TFU+-` 中的某个字符,$1 \\le i,j \\le n$。\n\n",
"test": {
"input": "1 3\n3 3\n- 2 1\n- 3 2\n+ 1 3\n3 3\n- 2 1\n- 3 2\n- 1 3\n2 2\nT 2\nU 2\n",
"output": "0\n3\n1\n"
}
},
{
"code_id": 1,
"code": "// {'input': '10 3\\n3 3 3\\n2 3 3\\n2 3 1\\n3 1 1\\n3 1 2\\n1 3 1\\n1 1 2\\n1 2 2\\n1 3 2\\n1 2 1', 'output': '3\\n1\\n3\\n0\\n1\\n0\\n1\\n0\\n0\\n1'} \n// I'll always miss you like a darling.\n\n#include <bits/stdc++.h>\n\nusing namespace std;\n\n\n\n#define LL long long\n\n#define LD long double\n\n#define ull unsigned long long\n\n#define uint unsigned int\n\n#define x first\n\n#define y second\n\n#define pb push_back\n\n#define pf push_front\n\n#define mp make_pair\n\n#define Pair pair<int,int>\n\n#define pLL pair<LL,LL>\n\n#define pii pair<double,double>\n\n#define LOWBIT(x) ((x) & (-x))\n\n#define rep(i,l,r) for (register int i=int(l);i<=int(r);i++)\n\n#define Rep(i,l,r) for (register int i=int(l);i<int(r);i++)\n\n#define REP(i,r,l) for (register int i=int(r);i>=int(l);i--)\n\n\n\nconst int INF=2e9;\n\nconst LL LINF=2e16;\n\nconst int magic=348;\n\nconst int MOD=1e9+7;\n\nconst double eps=1e-10;\n\nconst double pi=acos(-1);\n\n\n\ntemplate<typename T> inline void Get(T &x)\n\n{\n\n\tbool f;char ch;T res;\n\n\twhile (!isdigit(ch=getchar()) && ch!='-') {}\n\n\tif (ch=='-') f=false,res=0; else f=true,res=ch-'0';\n\n\twhile (isdigit(ch=getchar())) res=res*10+ch-'0';\n\n\tx=(f?res:(-res));\n\n}\n\n\n\ntemplate<typename T1,typename ...T2> inline void Get(T1 &x,T2 &...y) {Get(x);Get(y...);}\n\n\n\nstruct fastio\n\n{\n\n static const int S=1e7;\n\n char rbuf[S+48],wbuf[S+48];int rpos,wpos,len;\n\n fastio() {rpos=len=wpos=0;}\n\n inline char Getchar()\n\n {\n\n if (rpos==len) rpos=0,len=fread(rbuf,1,S,stdin);\n\n if (!len) return EOF;\n\n return rbuf[rpos++];\n\n }\n\n template<typename T> inline void Get(T &x)\n\n {\n\n char ch;bool f;T res;\n\n while (!isdigit(ch=Getchar()) && ch!='-') {}\n\n if (ch=='-') f=false,res=0; else f=true,res=ch-'0';\n\n while (isdigit(ch=Getchar())) res=res*10+ch-'0';\n\n x=(f?res:(-res));\n\n }\n\n template<typename T1,typename ...T2> inline void Get(T1 &x,T2 &...y) {Get(x);Get(y...);}\n\n inline void getstring(char *s)\n\n {\n\n char ch;\n\n while ((ch=Getchar())<=32) {}\n\n for (;ch>32;ch=Getchar()) *s++=ch;\n\n *s='\\0';\n\n }\n\n inline void flush() {fwrite(wbuf,1,wpos,stdout);fflush(stdout);wpos=0;}\n\n inline void Writechar(char ch)\n\n {\n\n if (wpos==S) flush();\n\n wbuf[wpos++]=ch;\n\n }\n\n template<typename T> inline void Print(T x,char ch)\n\n {\n\n char s[20];int pt=0;\n\n if (x==0) s[++pt]='0';\n\n else\n\n {\n\n if (x<0) Writechar('-'),x=-x;\n\n while (x) s[++pt]='0'+x%10,x/=10;\n\n }\n\n while (pt) Writechar(s[pt--]);\n\n Writechar(ch);\n\n }\n\n\ttemplate<typename T1,typename ...T2> inline void Print(T1 &x,T2 &...y) {Print(x,' ');Print(y...,' ');Writechar('\\n');}\n\n inline void printstring(char *s)\n\n {\n\n int pt=1;\n\n while (s[pt]!='\\0') Writechar(s[pt++]);\n\n }\n\n}io;\n\n\n\ntemplate<typename T> inline void check_max(T &x,T cmp) {x=max(x,cmp);}\n\ntemplate<typename T> inline void check_min(T &x,T cmp) {x=min(x,cmp);}\n\ntemplate<typename T> inline T myabs(T x) {return x>=0?x:-x;}\n\ntemplate<typename T> inline T gcd(T x,T y) {return y==0?x:gcd(y,x%y);}\n\ntemplate<typename T> inline T add(T x) {if (x>=MOD) x-=MOD;return x;}\n\ntemplate<typename T> inline T add(T x,int MO) {if (x>=MO) x-=MO;return x;}\n\ntemplate<typename T> inline T sub(T x) {if (x<0) x+=MOD;return x;}\n\ntemplate<typename T> inline T sub(T x,int MO) {if (x<0) x+=MO;return x;}\n\ntemplate<typename T> inline T mul(T x,T y) {return 1ll*x*y%MOD;}\n\ntemplate<typename T> inline T mul(T x,T y,int MO) {return 1ll*x*y%MO;}\n\ntemplate<typename T> inline void Add(T &x,T y) {x=add(x+y);}\n\ntemplate<typename T> inline void Add(T &x,T y,int MO) {x=add(x+y,MO);}\n\ntemplate<typename T> inline void Sub(T &x,T y) {x=sub(x-y);}\n\ntemplate<typename T> inline void Sub(T &x,T y,int MO) {x=sub(x-y,MO);}\n\ntemplate<typename T> inline void Mul(T &x,T y) {x=mul(x,y);}\n\ntemplate<typename T> inline void Mul(T &x,T y,int MO) {x=mul(x,y,MO);}\n\ntemplate<typename T> inline int quick_pow(int x,T y) {int res=1;while (y) {if (y&1) res=1ll*res*x%MOD;x=1ll*x*x%MOD;y>>=1;}return res;}\n\ntemplate<typename T> inline int quick_pow(int x,T y,int MO) {int res=1;while (y) {if (y&1) res=1ll*res*x%MO;x=1ll*x*x%MO;y>>=1;}return res;}\n\n\n\nconst int MAXN=2e5;\n\n\n\nint n,k;\n\n\n\nnamespace BIT\n\n{\n\n\tint c[MAXN+48];int history[MAXN+48],htot;\n\n\tinline void init() {htot=0;}\n\n\tinline void modify(int x,int delta) {while (x<=k) c[x]+=delta,history[++htot]=x,x+=LOWBIT(x);}\n\n\tinline int query(int x) {int res=0;while (x) res+=c[x],x^=LOWBIT(x);return res;}\n\n\tinline void undo() {rep(i,1,htot) c[history[i]]=0;}\n\n}\n\n\n\nstruct node\n\n{\n\n\tint a,b,c,ind,cnt;\n\n\tnode () {}\n\n\tinline node(int _a,int _b,int _c,int _ind,int _cnt) {a=_a;b=_b;c=_c;ind=_ind;cnt=_cnt;}\n\n\tinline bool operator < (const node &other) const\n\n\t{\n\n\t\tif (a!=other.a) return a<other.a;\n\n\t\tif (b!=other.b) return b<other.b;\n\n\t\tif (c!=other.c) return c<other.c;\n\n\t\tassert(false);\n\n\t}\n\n}a[MAXN+48],tmp1[MAXN+48],tmp2[MAXN+48];int tot;\n\nint ans[MAXN+48],cnt[MAXN+48];\n\n\n\nmap<pair<pair<int,int>,int>,int> Mp;\n\n\n\ninline bool cmpy(node x,node y) {if (x.b!=y.b) return x.b<y.b; return x.c<y.c;}\n\n\n\ninline void cdq(int l,int r)\n\n{\n\n\tif (l==r) return;\n\n\tint mid=(l+r)>>1;cdq(l,mid);\n\n\tint tot1=mid-l+1,tot2=r-mid;\n\n\trep(i,1,tot1) tmp1[i]=a[l+i-1];rep(i,1,tot2) tmp2[i]=a[mid+i];\n\n\tsort(tmp1+1,tmp1+tot1+1,cmpy);sort(tmp2+1,tmp2+tot2+1,cmpy);BIT::init();\n\n\tfor (register int k1=1,k2=1;k2<=tot2;)\n\n\t{\n\n\t\tif (k1<=tot1 && tmp1[k1].b<=tmp2[k2].b) BIT::modify(tmp1[k1].c,tmp1[k1].cnt),k1++;\n\n\t\telse ans[tmp2[k2].ind]+=BIT::query(tmp2[k2].c),k2++;\n\n\t}\n\n\tBIT::undo();cdq(mid+1,r);\n\n}\n\n\n\nint main ()\n\n{\n\n// #ifndef ONLINE_JUDGE\n\n// \tdouble TIME=clock();\n\n// \tfreopen (\"a.in\",\"r\",stdin);\n\n// \tfreopen (\"a.out\",\"w\",stdout);\n\n// \tcerr<<\"Running...\"<<endl;\n\n// #endif\n\n\tGet(n,k);int x,y,z;\n\n\trep(i,1,n)\n\n\t{\n\n\t\tGet(x,y,z);if (Mp.find(mp(mp(x,y),z))!=Mp.end()) {a[Mp[mp(mp(x,y),z)]].cnt++;continue;}\n\n\t\tMp[mp(mp(x,y),z)]=++tot;a[tot]=node(x,y,z,0,1);\n\n\t}\n\n\tsort(a+1,a+tot+1);rep(i,1,tot) a[i].ind=i;cdq(1,tot);\n\n\trep(i,1,tot) cnt[ans[i]+a[i].cnt-1]+=a[i].cnt;\n\n\trep(i,0,n-1) printf(\"%d\\n\",cnt[i]);\n\n\tio.flush();\n\n// #ifndef ONLINE_JUDGE\n\n// \tcerr<<\"Exec Time: \"<<(clock()-TIME)/CLOCKS_PER_SEC<<endl;\n\n// #endif\n\n\treturn 0;\n\n}\n\n",
"status": [
"MLE"
],
"details": [
"MLE: Testcase:0"
],
"tcb_id": "三维偏序",
"query": "# 三维偏序\n## 题目描述\n有 $ n $ 个元素,第 $ i $ 个元素有 $ a_i $、$ b_i $、$ c_i $ 三个属性,设 $ f(i) $ 表示满足 $ a_j \\leq a_i $ 且 $ b_j \\leq b_i $ 且 $ c_j \\leq c_i $ 的 $ j $ 的数量。\r\n\r\n对于 $ d \\in [0, n) $,求 $ f(i) = d $ 的 $ i $ 的数量。\n## 输入格式\n第一行两个整数 $ n $、$ k $,分别表示元素数量和最大属性值。\r\n\r\n之后 $ n $ 行,每行三个整数 $ a_i $、$ b_i $、$ c_i $,分别表示三个属性值。\n## 输出格式\n输出 $ n $ 行,第 $ d + 1 $ 行表示 $ f(i) = d $ 的 $ i $ 的数量。\n## 样例\n输入:\n10 3\n3 3 3\n2 3 3\n2 3 1\n3 1 1\n3 1 2\n1 3 1\n1 1 2\n1 2 2\n1 3 2\n1 2 1\n输出:\n3\n1\n3\n0\n1\n0\n1\n0\n0\n1\n\n\n## 数据范围与提示\n$ 1 \\leq n \\leq 100000, 1 \\leq k \\leq 200000 $",
"test": {
"input": "10 3\n3 3 3\n2 3 3\n2 3 1\n3 1 1\n3 1 2\n1 3 1\n1 1 2\n1 2 2\n1 3 2\n1 2 1",
"output": "3\n1\n3\n0\n1\n0\n1\n0\n0\n1"
}
},
{
"code_id": 0,
"code": "// {'input': '1\\n3\\n1 3 2', 'output': '3'} \n#include<bits/stdc++.h>\n\n#define Mod 998244353\n\nusing namespace std;\n\nconst int M=1400005;\n\nconst int N=1005;\n\nint A[M],Fac[M],Ifac[M],dp[N][N];\n\nbool vis[M];\n\nint n,_;\n\nlong long C(int n,int m){\n\n\tif(n<m or n<0 or m<0) return 0;\n\n\treturn (long long)Fac[n]*Ifac[m]%Mod*Ifac[n-m]%Mod;\n\n}\n\nlong long F(int n,int m){\n\n\tassert(m<=n);\n\n\tif(n<N and m<N) return dp[n][m];\n\n\treturn (C(n+m-2,n-1)-C(n+m-2,n))%Mod;\n\n}\n\nint main(){\n\n\t// freopen(\"inverse.in\",\"r\",stdin);\n\n\t// freopen(\"inverse.out\",\"w\",stdout);\n\n\tFac[0]=Ifac[1]=dp[1][1]=1;\n\n\tfor(int i=1;i<M;++i) Fac[i]=(long long)Fac[i-1]*i%Mod;\n\n\tfor(int i=2;i<M;++i) Ifac[i]=(long long)-Mod/i*Ifac[Mod%i]%Mod;\n\n\tfor(int i=2;i<M;++i) Ifac[i]=(long long)Ifac[i-1]*Ifac[i]%Mod;\n\n\tfor(int i=2;i<N;++i) for(int j=1;j<=i;++j) dp[i][j]=(dp[i-1][j]+dp[i][j-1])%Mod;\n\n\tfor(scanf(\"%d\",&_);_;--_){\n\n\t\tscanf(\"%d\",&n);\n\n\t\tfor(int i=0;i<n;++i) scanf(\"%d\",A+i);\n\n\t\tmemset(vis,0,sizeof(vis));\n\n\t\tlong long ans=0;\n\n\t\tint mx=0,p=1;\n\n\t\tfor(int i=0;i<n;++i){\n\n\t\t\tans+=F(n-i+1,n-max(A[i],mx));\n\n\t\t\tif(A[i]<mx and p<A[i]) break;\n\n\t\t\tmx=max(mx,A[i]);\n\n\t\t\tvis[A[i]]=true;\n\n\t\t\twhile(vis[p]) ++p;\n\n\t\t}\n\n\t\tprintf(\"%lld\\n\",(ans%Mod+Mod)%Mod);\n\n\t}\n\n\treturn 0;\n\n}\n\n",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "冒泡排序",
"query": "# 冒泡排序\n## 题目描述\n最近,小 S 对冒泡排序产生了浓厚的兴趣。为了问题简单,小 S 只研究对 **$1$ 到 $n$ 的排列**的冒泡排序。\r\n\r\n下面是对冒泡排序的算法描述。\r\n\r\n```plain\r\n输入:一个长度为 n 的排列 p[1...n]\r\n输出:p 排序后的结果。\r\nfor i = 1 to n do\r\n\tfor j = 1 to n - 1 do\r\n\t\tif(p[j] > p[j + 1])\r\n\t\t\t交换 p[j] 与 p[j + 1] 的值\r\n```\r\n\r\n冒泡排序的交换次数被定义为交换过程的执行次数。可以证明交换次数的一个下界是 $\\frac 1 2 \\sum_{i=1}^n \\lvert i - p_i \\rvert$,其中 $p_i$ 是排列 $p$ 中第 $i$ 个位置的数字。如果你对证明感兴趣,可以看提示。\r\n\r\n小 S 开始专注于研究长度为 $n$ 的排列中,满足交换次数 $= \\frac 1 2 \\sum_{i=1}^n \\lvert i - p_i \\rvert$ 的排列(在后文中,为了方便,我们把所有这样的排列叫「好」的排列)。他进一步想,这样的排列到底多不多?它们分布的密不密集?\r\n\r\n小 S 想要对于一个给定的长度为 $n$ 的排列 $q$,计算字典序严格大于 $q$ 的“好”的排列个数。但是他不会做,于是求助于你,希望你帮他解决这个问题,考虑到答案可能会很大,因此只需输出答案对 $998244353$ 取模的结果。\n## 输入格式\r\n\r\n输入第一行包含一个正整数 $T$,表示数据组数。\r\n\r\n对于每组数据,第一行有一个正整数 $n$,保证 $n \\leq 6 \\times 10^5$。\r\n\r\n接下来一行会输入 $n$ 个正整数,对应于题目描述中的 $q_i$,保证输入的是一个 $1$ 到 $n$ 的排列。\n## 输出格式\r\n\r\n输出共 $T$ 行,每行一个整数。\r\n\r\n对于每组数据,输出一个整数,表示字典序严格大于 $q$ 的「好」的排列个数对 $998244353$ 取模的结果。\n## 样例\n### 样例 1\n输入:\n1\n3\n1 3 2\n输出:\n3\n\n字典序比 $1 \\ 3 \\ 2$ 大的排列中,除了 $3 \\ 2 \\ 1$ 以外都是「好」的排列,故答案为 $3$。\n## 数据范围与提示\n下面是对本题每个测试点的输入规模的说明。\r\n\r\n对于所有数据,均满足 $T = 5$(样例可能不满足)。\r\n\r\n记 $n_\\mathrm{max}$ 表示每组数据中 $n$ 的最大值,$\\sum n$ 表示所有数据的 $n$ 的和。$n_{\\max} \\le 600000,\\sum n \\le 2000000$\r\n\r\n#### 「提示」\r\n\r\n下面是对交换次数下界是 $\\frac 1 2 \\sum_{i=1}^n \\lvert i - p_i \\rvert$ 的证明。\r\n\r\n排序本质上就是数字的移动,因此排序的交换次数应当可以用数字移动的总距离来描述。对于第 $i$ 个位置,假设在初始排列中,这个位置上的数字是 pi,那么我们需要将这个数字移动到第 $p_i$ 个位置上,移动的距离是 $\\lvert i - p_i \\rvert$。从而移动的总距离就是 $\\sum_{i=1}^n \\lvert i - p_i \\rvert$,而冒泡排序每次会交换两个相邻的数字,每次交换可以使移动的总距离至多减少 $2$。因此 $\\frac 1 2 \\sum_{i=1}^n \\lvert i - p_i \\rvert$ 是冒泡排序的交换次数的下界。\r\n\r\n并不是所有的排列都达到了下界,比如在 $n = 3$ 的时候,考虑排列 $3 \\ 2 \\ 1$,这个排列进行冒泡排序以后的交换次数是 $3$,但是 $\\frac 1 2 \\sum_{i=1}^n \\lvert i - p_i \\rvert$ 只有 $2$。",
"test": {
"input": "1\n3\n1 3 2",
"output": "3"
}
},
{
"code_id": 0,
"code": "// {'input': '5 0\\n5 1 7 9 9', 'output': '247'} \n#include<bits/stdc++.h>\n\nclock_t t=clock();\n\nnamespace my_std{\n\n\tusing namespace std;\n\n\t#define pii pair<int,int>\n\n\t#define fir first\n\n\t#define sec second\n\n\t#define MP make_pair\n\n\t#define rep(i,x,y) for (register int i=(x);i<=(y);++i)\n\n\t#define drep(i,x,y) for (int i=(x);i>=(y);i--)\n\n\t#define go(x) for (int i=head[x];i;i=edge[i].nxt)\n\n\t#define templ template<typename T>\n\n\t#define sz 5010101\n\n\ttypedef long long ll;\n\n\ttypedef double db;\n\n\tmt19937 rng(chrono::steady_clock::now().time_since_epoch().count());\n\n\ttempl inline T rnd(T l,T r) {return uniform_int_distribution<T>(l,r)(rng);}\n\n\ttempl inline bool chkmax(T &x,T y){return x<y?x=y,1:0;}\n\n\ttempl inline bool chkmin(T &x,T y){return x>y?x=y,1:0;}\n\n\ttempl inline void read(T& t)\n\n\t{\n\n\t\tt=0;char f=0,ch=getchar();double d=0.1;\n\n\t\twhile(ch>'9'||ch<'0') f|=(ch=='-'),ch=getchar();\n\n\t\twhile(ch<='9'&&ch>='0') t=t*10+ch-48,ch=getchar();\n\n\t\tif(ch=='.'){ch=getchar();while(ch<='9'&&ch>='0') t+=d*(ch^48),d*=0.1,ch=getchar();}\n\n\t\tt=(f?-t:t);\n\n\t}\n\n\ttemplate<typename T,typename... Args>inline void read(T& t,Args&... args){read(t); read(args...);}\n\n\tchar __sr[1<<21],__z[20];int __C=-1,__zz=0;\n\n\tinline void Ot(){fwrite(__sr,1,__C+1,stdout),__C=-1;}\n\n\tinline void print(register int x)\n\n\t{\n\n\t\tif(__C>1<<20)Ot();if(x<0)__sr[++__C]='-',x=-x;\n\n\t\twhile(__z[++__zz]=x%10+48,x/=10);\n\n\t\twhile(__sr[++__C]=__z[__zz],--__zz);__sr[++__C]='\\n';\n\n\t}\n\n\tvoid file()\n\n\t{\n\n\t\t#ifdef NTFOrz\n\n\t\tfreopen(\"a.in\",\"r\",stdin);\n\n\t\t#else\n\n\t\tfreopen(\"partition.in\",\"r\",stdin);\n\n\t\tfreopen(\"partition.out\",\"w\",stdout);\n\n\t\t#endif\n\n\t}\n\n\tinline void chktime()\n\n\t{\n\n\t\t#ifndef ONLINE_JUDGE\n\n\t\tcout<<(clock()-t)/1000.0<<'\\n';\n\n\t\t#endif\n\n\t}\n\n\t#ifdef mod\n\n\tll ksm(ll x,int y){ll ret=1;for (;y;y>>=1,x=x*x%mod) if (y&1) ret=ret*x%mod;return ret;}\n\n\tll inv(ll x){return ksm(x,mod-2);}\n\n\t#else\n\n\tll ksm(ll x,int y){ll ret=1;for (;y;y>>=1,x=x*x) if (y&1) ret=ret*x;return ret;}\n\n\t#endif\n\n//\tinline ll mul(ll a,ll b){ll d=(ll)(a*(double)b/mod+0.5);ll ret=a*b-d*mod;if (ret<0) ret+=mod;return ret;}\n\n}\n\nusing namespace my_std;\n\n\n\nint n,type;\n\nll a[sz],sum[sz],s[sz];\n\nint pre[sz];\n\n\n\nint q[sz],l,r;\n\n\n\nint main()\n\n{\n\n\t// file();\n\n\tread(n,type);\n\n\tif (type) return 0;\n\n\trep(i,1,n) read(a[i]),sum[i]=sum[i-1]+a[i];\n\n\tq[l=r=1]=0;\n\n\trep(i,1,n)\n\n\t{\n\n\t\twhile (l<r&&sum[i]>=s[q[l+1]]+sum[q[l+1]]) ++l;\n\n\t\tpre[i]=q[l];s[i]=sum[i]-sum[q[l]];\n\n\t\twhile (l<r&&sum[i]+s[i]<=sum[q[r]]+s[q[r]]) --r;\n\n\t\tq[++r]=i;\n\n\t}\n\n\tll ans=0;\n\n\tfor (int i=n;i;i=pre[i]) ans+=(sum[i]-sum[pre[i]])*(sum[i]-sum[pre[i]]);\n\n\tcout<<ans;\n\n\treturn 0;\n\n}",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "划分",
"query": "划分\n题目描述\n2048 年,第三十届 CSP 认证的考场上,作为选手的小明打开了第一题。这个题的样例有 $n$ 组数据,数据从 $1 \\sim n$ 编号,$i$ 号数据的规模为 $a_i$。\r\n\r\n小明对该题设计出了一个暴力程序,对于一组规模为 $u$ 的数据,该程序的**运行时间**为 $u^2$。然而这个程序运行完一组规模为 $u$ 的数据之后,它将在任何一组规模**小于** $u$ 的数据上运行错误。样例中的 $a_i$ 不一定递增,但小明又想在不修改程序的情况下正确运行样例,于是小明决定使用一种非常原始的解决方案:将所有数据划分成若干个数据段,段内数据编号**连续**,接着将同一段内的数据合并成新数据,其规模等于段内原数据的**规模之和**,小明将让新数据的规模能够递增。\r\n\r\n也就是说,小明需要找到一些分界点 $1 \\le k_1 < k_2 < \\cdots < k_p < n$,使得:\r\n\r\n$$\r\n\\sum_{i=1}^{k_1} a_i\\le \\sum_{i=k_1+1}^{k_2} a_i \\le \\dots \\le \\sum_{i=k_p+1}^n a_i\r\n$$\r\n\r\n注意 $p$ 可以为 $0$ 且此时 $k_0 = 0$,也就是小明可以将所有数据合并在一起运行。\r\n\r\n小明希望他的程序在正确运行样例情况下,运行时间也能尽量小,也就是**最小化**\r\n\r\n$$\r\n\\left(\\sum_{i=1}^{k_1} a_i \\right)^2+\\left(\\sum_{i=k_1}^{k_2} a_i \\right)^2+\\cdots +\\left(\\sum_{i=k_p+1}^n a_i \\right)^2\r\n$$\r\n\r\n小明觉得这个问题非常有趣,并向你请教:给定 $n$ 和 $a_i$,请你求出最优划分方案下,小明的程序的最小运行时间。\n输入格式\r\n\r\n**由于本题的数据范围较大,部分测试点的 $a_i$ 将在程序内生成**。\r\n\r\n第一行两个整数 $n, \\text{type}$。$n$ 的意义见题目描述,$\\text{type}$ 表示输入方式。\r\n\r\n1. 若 $\\text{type} = 0$,则该测试点的 $a_i$ **直接给出**。输入文件接下来:第二行 $n$ 个以空格分隔的整数 $a_i$,表示每组数据的规模。\r\n2. 若 $\\text{type} = 1$,则该测试点的 $a_i$ 将**特殊生成**,生成方式见后文。输入文件接下来:第二行六个以空格分隔的整数 $x, y, z, b_1, b_2, m$。接下来 $m$ 行中,第 $i$($1 \\le i \\le m$)行包含三个以空格分隔的正整数 $p_i, l_i, r_i$。\r\n\r\n对于 $\\text{type} = 1$ 的 $23 \\sim 25$ 号测试点,$a_i$ 的生成方式如下:\r\n- 给定整数 $x, y, z, b_1, b_2, m$,以及 $m$ 个三元组 $(p_i, l_i, r_i)$。\r\n- 保证 $n \\ge 2$。若 $n > 2$,则 $\\forall 3\\le i\\le n$,$b_i = (x \\times b_{i−1} + y \\times b_{i−2} + z) \\bmod 2^{30}$。\r\n- 保证 $1 \\le p_i \\le n$,$p_m = n$。令 $p_0 = 0$,则 $p_i$ 还满足 $\\forall 0 \\le i < m$ 有 $p_i < p_{i+1}$。\r\n- 对于所有 $1 \\le j \\le m$,若下标值 $i$($1 \\le i \\le n$)满足 $p_{j−1} < i \\le p_j$,则有\r\n\r\n$$\r\na_i=\\left( b_i \\bmod (r_j-l_j+1) \\right) +l_j\r\n$$\r\n\r\n**上述数据生成方式仅是为了减少输入量大小,标准算法不依赖于该生成方式**。\n输出格式\r\n\r\n输出一行一个整数,表示答案。\n样例 1\n输入:\n5 0\n5 1 7 9 9\n输出:\n247\n\n最优的划分方案为 $\\{5,1\\},\\{7\\},\\{9\\},\\{9\\}$。由 $5 + 1 \\le 7 \\le 9 \\le 9$ 知该方案合法。\n\n答案为 $(5 + 1)^2 + 7^2 + 9^2 + 9^2 = 247$。\n\n虽然划分方案 $\\{5\\},\\{1\\},\\{7\\},\\{9\\},\\{9\\}$ 对应的运行时间比 $247$ 小,但它不是一组合法方案,因为 $5 > 1$。\n\n虽然划分方案 $\\{5\\},\\{1,7\\},\\{9\\},\\{9\\}$ 合法,但该方案对应的运行时间为 $251$,比 $247$ 大。\n样例 2\n输入:\n10 0\n5 6 7 7 4 6 2 13 19 9\n输出:\n1256\n\n最优的划分方案为 $\\{5\\},\\{6\\},\\{7\\},\\{7\\},\\{4,6,2\\},\\{13\\},\\{19,9\\}$。\n数据范围与提示\n| 测试点编号 | $n\\le$ | $a_i\\le$ | $\\text{type}=$ |\r\n| :---------: | :------------: | :------: | :------------: |\r\n| $1\\sim 3$ | $10$<!-- 233 --> | $10$ | $0$ |\r\n| $4\\sim 6$ | $50$ | $10^3$ | $0$ |\r\n| $7\\sim 9$ | $400$ | $10^4$ | $0$ |\r\n| $10\\sim 16$ | $5\\times 10^3$ | $10^5$ | $0$ |\r\n| $17\\sim 22$ | $5\\times 10^5$ | $10^6$ | $0$ |\r\n| $23\\sim 25$ | $4\\times 10^7$ | $10^9$ | $1$ |\r\n\r\n对于 $\\text{type} = 0$ 的测试点,保证答案不超过 $4\\times 10^{18}$。\r\n\r\n所有测试点满足:$\\text{type} \\in \\{0, 1\\} , 2 \\le n \\le 4 \\times 10^7 , 1 \\le a_i \\le 10^9 , 1 \\le m \\le 10^5 ,1 \\le l_i \\le r_i \\le 10^9 , 0 \\le x, y, z, b_1, b_2 < 2^{30}$。",
"test": {
"input": "5 0\n5 1 7 9 9",
"output": "247"
}
},
{
"code_id": 1,
"code": "// {'input': '5 0\\n5 1 7 9 9', 'output': '247'} \n#include<bits/stdc++.h>\n\n\n\n#define FOO(x,y) for(int x=0,x##_=(int)y;x<x##_;x++)\n\n#define FOG(x,y,z) for(register int x=y,x##_=z;x<=x##_;++x)\n\n#define DOG(x,y,z) for(register int x=y,x##_=z;x>=x##_;--x)\n\n#define FOR(x,y,z) for(int x=y,x##_=z;x<=x##_;++x)\n\n#define DOR(x,y,z) for(int x=y,x##_=z;x>=x##_;--x)\n\n#define FOR_(x,y,z,s) for(int x=y,x##_=z;x<=x##_;x+=s)\n\n#define DOR_(x,y,z,s) for(int x=y,x##_=z;x>=x##_;x-=s)\n\n#define FOR__(x,y,z) for(int x=y,x##_=z;x<=x##_;x<<=1)\n\n#define EOR(x,y) for(int x##_=head[x],y=edge[x##_].e;x##_;y=edge[x##_=edge[x##_].to].e)\n\n#define EGOR(x,y,z) for(int x##_=head[x],y=edge[x##_].e,z=edge[x##_].c;x##_;y=edge[x##_=edge[x##_].to].e,z=edge[x##_].c)\n\n#define EOD(x,y) for(int &x##_=head[x],y=edge[x##_].e;x##_;y=edge[x##_=edge[x##_].to].e)\n\n#define SOR(x,y) for(int x=y,x##_=y;x;x=x##_&(x-1))\n\n#define SOO(x,y) for(int x=y,x##_=y;;x=x##_&(x-1))\n\n#define FOB(b,y) for(int b##_=y,b=bin[b##_&-b##_];b##_;b##_&=b##_-1,b=bin[b##_&-b##_])\n\n#define While(x) for(;x;)\n\n#define clr(x,y) memset(x,y,sizeof(x))\n\n#define lbd(A,s,e,x) (lower_bound(A+s,A+e+1,x)-A)\n\n#define ubd(A,s,e,x) (upper_bound(A+s,A+e+1,x)-A)\n\n#define uni(A,x) {sort(A+1,A+x+1);x=unique(A+1,A+x+1)-A-1;}\n\n#define uniz(A,x) {sort(A,A+x);x=unique(A,A+x)-A;}\n\n#define sot(A,s,e) sort(A+s,A+e+1)\n\n#define szf(x) sizeof(x)\n\n#define min3(x,y,z) min(min(x,y),z)\n\n#define max3(x,y,z) max(max(x,y),z)\n\n\n\n#define read2(x,y) read(x),read(y)\n\n#define read3(x,y,z) read(x),read(y),read(z)\n\n#define read4(x,y,z,w) read3(x,y,z),read(w)\n\n#define reads(str) sf(\"%s\",str)\n\n#define readf(x) sf(\"%lf\",&x)\n\n\n\n#define ts (*this)\n\n#define sf scanf\n\n#define pf printf\n\n\n\n#define ll long long\n\n#define ull unsigned long long\n\n#define uint unsigned int\n\n#define db double\n\n#define ct clock_t\n\n#define ck() clock()\n\n#define rd rand()\n\n#define rmx RAND_MAX\n\n#define RD T*(rd*2-rmx)\n\n\n\n\n\nusing namespace std;\n\n\n\ntemplate<class T>bool tomin(T &x,T y){return y<x||x==-1?x=y,1:0;}\n\ntemplate<class T>bool tomax(T &x,T y){return x<y?x=y,1:0;}\n\ntemplate<class T>void read(T &x){\n\n char c;\n\n x=0;\n\n int f=1;\n\n while(c=getchar(),c<'0'||c>'9')if(c=='-')f=-1;\n\n do x=(x<<3)+(x<<1)+(c^48);\n\n while(c=getchar(),c>='0'&&c<='9');\n\n x*=f;\n\n}\n\nbool mem1;\n\nconst db Pi=acos(-1);\n\nconst int maxn=4e7+5;\n\nint n;\n\nll A[maxn],sum[maxn];\n\nnamespace P36{\n\n const int maxn=405;\n\n ll dp[maxn][maxn];\n\n void solve(){\n\n clr(dp,-1);\n\n dp[0][0]=0;\n\n FOR(r,1,n){\n\n ll sum1=0;\n\n DOR(l,r,1){\n\n sum1+=A[l];\n\n ll sum2=0;\n\n DOR(p,l-1,0){\n\n if((sum2+=A[p])>sum1)break;\n\n if(~dp[p][l-1])tomin(dp[l][r],dp[p][l-1]);\n\n }\n\n if(~dp[l][r]){\n\n dp[l][r]+=sum1*sum1;\n\n // pf(\"dp[%d][%d]=%lld sum=%lld\\n\",l,r,dp[l][r],sum1);\n\n }\n\n }\n\n }\n\n ll ans=-1;\n\n FOR(l,1,n)if(~dp[l][n])tomin(ans,dp[l][n]);\n\n pf(\"%lld\",ans);\n\n }\n\n}\n\nbool mem2;\n\nint main(){\n\n // freopen(\"partition.in\",\"r\",stdin);\n\n // freopen(\"partition.out\",\"w\",stdout);\n\n // cerr<<(&mem2-&mem1)/1024.0/1024<<endl;\n\n srand(time(NULL));\n\n int Typ;\n\n read2(n,Typ);\n\n if(Typ);\n\n else{\n\n FOR(i,1,n){\n\n read(A[i]);\n\n sum[i]=sum[i-1]+A[i];\n\n }\n\n if(n<=400)P36::solve();\n\n }\n\n return 0;\n\n}\n\n",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "划分",
"query": "划分\n题目描述\n2048 年,第三十届 CSP 认证的考场上,作为选手的小明打开了第一题。这个题的样例有 $n$ 组数据,数据从 $1 \\sim n$ 编号,$i$ 号数据的规模为 $a_i$。\r\n\r\n小明对该题设计出了一个暴力程序,对于一组规模为 $u$ 的数据,该程序的**运行时间**为 $u^2$。然而这个程序运行完一组规模为 $u$ 的数据之后,它将在任何一组规模**小于** $u$ 的数据上运行错误。样例中的 $a_i$ 不一定递增,但小明又想在不修改程序的情况下正确运行样例,于是小明决定使用一种非常原始的解决方案:将所有数据划分成若干个数据段,段内数据编号**连续**,接着将同一段内的数据合并成新数据,其规模等于段内原数据的**规模之和**,小明将让新数据的规模能够递增。\r\n\r\n也就是说,小明需要找到一些分界点 $1 \\le k_1 < k_2 < \\cdots < k_p < n$,使得:\r\n\r\n$$\r\n\\sum_{i=1}^{k_1} a_i\\le \\sum_{i=k_1+1}^{k_2} a_i \\le \\dots \\le \\sum_{i=k_p+1}^n a_i\r\n$$\r\n\r\n注意 $p$ 可以为 $0$ 且此时 $k_0 = 0$,也就是小明可以将所有数据合并在一起运行。\r\n\r\n小明希望他的程序在正确运行样例情况下,运行时间也能尽量小,也就是**最小化**\r\n\r\n$$\r\n\\left(\\sum_{i=1}^{k_1} a_i \\right)^2+\\left(\\sum_{i=k_1}^{k_2} a_i \\right)^2+\\cdots +\\left(\\sum_{i=k_p+1}^n a_i \\right)^2\r\n$$\r\n\r\n小明觉得这个问题非常有趣,并向你请教:给定 $n$ 和 $a_i$,请你求出最优划分方案下,小明的程序的最小运行时间。\n输入格式\r\n\r\n**由于本题的数据范围较大,部分测试点的 $a_i$ 将在程序内生成**。\r\n\r\n第一行两个整数 $n, \\text{type}$。$n$ 的意义见题目描述,$\\text{type}$ 表示输入方式。\r\n\r\n1. 若 $\\text{type} = 0$,则该测试点的 $a_i$ **直接给出**。输入文件接下来:第二行 $n$ 个以空格分隔的整数 $a_i$,表示每组数据的规模。\r\n2. 若 $\\text{type} = 1$,则该测试点的 $a_i$ 将**特殊生成**,生成方式见后文。输入文件接下来:第二行六个以空格分隔的整数 $x, y, z, b_1, b_2, m$。接下来 $m$ 行中,第 $i$($1 \\le i \\le m$)行包含三个以空格分隔的正整数 $p_i, l_i, r_i$。\r\n\r\n对于 $\\text{type} = 1$ 的 $23 \\sim 25$ 号测试点,$a_i$ 的生成方式如下:\r\n- 给定整数 $x, y, z, b_1, b_2, m$,以及 $m$ 个三元组 $(p_i, l_i, r_i)$。\r\n- 保证 $n \\ge 2$。若 $n > 2$,则 $\\forall 3\\le i\\le n$,$b_i = (x \\times b_{i−1} + y \\times b_{i−2} + z) \\bmod 2^{30}$。\r\n- 保证 $1 \\le p_i \\le n$,$p_m = n$。令 $p_0 = 0$,则 $p_i$ 还满足 $\\forall 0 \\le i < m$ 有 $p_i < p_{i+1}$。\r\n- 对于所有 $1 \\le j \\le m$,若下标值 $i$($1 \\le i \\le n$)满足 $p_{j−1} < i \\le p_j$,则有\r\n\r\n$$\r\na_i=\\left( b_i \\bmod (r_j-l_j+1) \\right) +l_j\r\n$$\r\n\r\n**上述数据生成方式仅是为了减少输入量大小,标准算法不依赖于该生成方式**。\n输出格式\r\n\r\n输出一行一个整数,表示答案。\n样例 1\n输入:\n5 0\n5 1 7 9 9\n输出:\n247\n\n最优的划分方案为 $\\{5,1\\},\\{7\\},\\{9\\},\\{9\\}$。由 $5 + 1 \\le 7 \\le 9 \\le 9$ 知该方案合法。\n\n答案为 $(5 + 1)^2 + 7^2 + 9^2 + 9^2 = 247$。\n\n虽然划分方案 $\\{5\\},\\{1\\},\\{7\\},\\{9\\},\\{9\\}$ 对应的运行时间比 $247$ 小,但它不是一组合法方案,因为 $5 > 1$。\n\n虽然划分方案 $\\{5\\},\\{1,7\\},\\{9\\},\\{9\\}$ 合法,但该方案对应的运行时间为 $251$,比 $247$ 大。\n样例 2\n输入:\n10 0\n5 6 7 7 4 6 2 13 19 9\n输出:\n1256\n\n最优的划分方案为 $\\{5\\},\\{6\\},\\{7\\},\\{7\\},\\{4,6,2\\},\\{13\\},\\{19,9\\}$。\n数据范围与提示\n| 测试点编号 | $n\\le$ | $a_i\\le$ | $\\text{type}=$ |\r\n| :---------: | :------------: | :------: | :------------: |\r\n| $1\\sim 3$ | $10$<!-- 233 --> | $10$ | $0$ |\r\n| $4\\sim 6$ | $50$ | $10^3$ | $0$ |\r\n| $7\\sim 9$ | $400$ | $10^4$ | $0$ |\r\n| $10\\sim 16$ | $5\\times 10^3$ | $10^5$ | $0$ |\r\n| $17\\sim 22$ | $5\\times 10^5$ | $10^6$ | $0$ |\r\n| $23\\sim 25$ | $4\\times 10^7$ | $10^9$ | $1$ |\r\n\r\n对于 $\\text{type} = 0$ 的测试点,保证答案不超过 $4\\times 10^{18}$。\r\n\r\n所有测试点满足:$\\text{type} \\in \\{0, 1\\} , 2 \\le n \\le 4 \\times 10^7 , 1 \\le a_i \\le 10^9 , 1 \\le m \\le 10^5 ,1 \\le l_i \\le r_i \\le 10^9 , 0 \\le x, y, z, b_1, b_2 < 2^{30}$。",
"test": {
"input": "5 0\n5 1 7 9 9",
"output": "247"
}
},
{
"code_id": 0,
"code": "// {'input': '3 5\\n2 2\\n1 1\\n2 2\\n1 2\\n1 1\\n2 2\\n1 1\\n1 2\\n1 2\\n2 1\\n2 2\\n1 1\\n0 1\\n0 1\\n2 2', 'output': '2 1\\n1 0\\n1 2\\n0 1\\n1 3\\n0 1'} \n#include<bits/stdc++.h>\n\n#define LL long long\n\n#define INF 0x3f3f3f3f\n\n#define MOD 64123\n\n#define MAXN 205\n\nusing namespace std;\n\nint n,m,C,b[MAXN],s[MAXN],ans1[MAXN],ans2[MAXN],wt[MAXN][MAXN],a[MAXN][MAXN];\n\nint bs[MAXN][MAXN];\n\nint rd(){\n\n\tint x=0,tp=1;char c=getchar();\n\n\twhile(c<'0' || c>'9'){if(c=='-')tp=-1;c=getchar();}\n\n\twhile(c>='0' && c<='9'){x=x*10+c-'0';c=getchar();}\n\n\treturn x*tp;\n\n}\n\nvoid fuck(){\n\n\tmemset(wt,0,sizeof(wt));\n\n\tmemset(bs,0,sizeof(bs));\n\n\tmemset(ans1,0,sizeof(ans1));\n\n\tmemset(ans2,-1,sizeof(ans2));\n\n\tn=rd(),m=rd();\n\n\tfor(int i=1;i<=m;i++)b[i]=bs[0][i]=rd();\n\n\tfor(int i=1;i<=n;i++){\n\n\t\tfor(int j=1;j<=m;j++){\n\n\t\t\ta[i][j]=rd();\n\n\t\t\tif(a[i][j])wt[i][a[i][j]]=j;\n\n\t\t}\n\n\t\tfor(int j=1;j<=m;j++){\n\n\t\t\tif((!wt[i][j]) || (!b[wt[i][j]]))continue;\n\n\t\t\tb[wt[i][j]]--,ans1[i]=j;\n\n\t\t\tbreak;\n\n\t\t}\n\n\t\tif(!ans1[i])ans1[i]=m+1;\n\n\t\tfor(int j=1;j<=m;j++)bs[i][j]=b[j];\n\n\t}\n\n\tfor(int i=1;i<=n;i++){\n\n\t\ts[i]=rd();\n\n\t\tfor(int j=0;j<=s[i];j++)if(wt[i][j]){ans2[i]=0;break;}\n\n\t\tif(ans1[i]<=s[i])continue;\n\n\t\tif(ans2[i]==-1){ans2[i]=i;continue;}\n\n\t\tans2[i]=0;\n\n\t\tfor(int j=i-2;j>=0;j--){\n\n\t\t\tans2[i]++;\n\n\t\t\tint now=0;\n\n\t\t\tfor(int k=1;k<=m;k++){\n\n\t\t\t\t// printf(\"wt[%d][%d]=%d\\n\",i,k,wt[i][k]);\n\n\t\t\t\tif((!wt[i][k]) || (!bs[j][wt[i][k]]))continue;\n\n\t\t\t\tnow=k;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif(now && now<=s[i])break;\n\n\t\t}\n\n\t}\n\n\tfor(int i=1;i<=n;i++)printf(\"%d \",ans1[i]);printf(\"\\n\");\n\n\tfor(int i=1;i<=n;i++)printf(\"%d \",ans2[i]);printf(\"\\n\");\n\n}\n\nint main(){\n\n\t// freopen(\"testdata.in\",\"r\",stdin);\n\n\t// freopen(\"shit.out\",\"w\",stdout);\n\n\tint T=rd();C=rd();\n\n\tif(C==1){while(T--)fuck();return 0;}\n\n\t// while(T--){\n\n\t// \tn=rd(),m=rd();\n\n\t// \tfor(int i=1;i<=m;i++)b[i]=rd();\n\n\t// \tfor(int i=1;i<=n;i++)\n\n\t// \t\tfor(int j=1;j<=m;j++){\n\n\t// \t\t\ta[i][j]=rd();\n\n\t// \t\t\tif(a[i][j])h[i][a[i][j]].push_back(j);\n\n\t// \t\t}\n\n\t// \tfor(int i=1;i<=n;i++)s[i]=rd();\n\n\t// }\n\n\t// printf(\"%.2lf\\n\",(double)clock()/CLOCKS_PER_SEC);\n\n\treturn 0;\n\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "劈配",
"query": "# 劈配\n## 题目描述\n一年一度的综艺节目《中国新代码》又开始了。Zayid 从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了。\r\n\r\n轻车熟路的 Zayid 顺利地通过了海选,接下来的环节是导师盲选,这一阶段的规则是这样的:\r\n总共 $n$ 名参赛选手(编号从 $1$ 至 $n$)每人写出一份代码并介绍自己的梦想。接着由所有导师对这些选手进行排名。为了避免后续的麻烦,规定**不存在**排名并列的情况。\r\n\r\n同时,每名选手都将**独立地**填写一份志愿表,来对总共 $m$ 位导师(编号从 $1$ 至 $m$)作出评价。志愿表上包含了共 $m$ 档志愿。对于每一档志愿,选手被允许填写最多 $C$ 位导师,每位导师**最多**被每位选手填写一次(放弃某些导师也是被允许的)。\r\n\r\n在双方的工作都完成后,进行录取工作。每位导师都有自己战队的人数上限,这意味着可能有部分选手的较高志愿、甚至是全部志愿无法得到满足。\r\n\r\n节目组对 ‘‘前 $i$ 名的录取结果最优’’ 作出如下定义:\r\n* 前 $1$ 名的录取结果最优,当且仅当第 $1$ 名被其最高非空志愿录取(特别地,如果第 $1$ 名没有填写志愿表,那么该选手出局)。\r\n* 前 $i$ 名的录取结果最优,当且仅当在前 $i ? 1$ 名的录取结果最优的情况下:第 $i$ 名被其理论可能的最高志愿录取(特别地,如果第 $i$ 名没有填写志愿表、或其所有志愿中的导师战队均已员,那么该选手出局)。\r\n\r\n如果一种方案满足 ‘‘前 $n$ 名的录取结果最优’’,那么我们可以简称这种方案是最优的。\r\n\r\n举例而言,$2$ 位导师 T 老师、F 老师的战队人数上限分别都是 $1$ 人;$2$ 位选手 Zayid、DuckD 分列第 $1$、$2$ 名。那么下面 $3$ 种志愿表及其对应的最优录取结果如表中所示:\r\n\r\n| 选手 | 第 $1$ 志愿 | 第 $2$ 志愿 | 录取志愿 | 加入战队 |\r\n| :-: | :-: | :-: | :-: | :-: |\r\n| Zayid | N/A | T 老师、F 老师 | 2 | F 老师 |\r\n| DuckD | T 老师 | F 老师 | 1 | T 老师 |\r\n\r\n| 选手 | 第 $1$ 志愿 | 第 $2$ 志愿 | 录取志愿 | 加入战队 |\r\n| :-: | :-: | :-: | :-: | :-: |\r\n| Zayid | T 老师 | F 老师 | 1 | T 老师 |\r\n| DuckD | T 老师 | F 老师 | 2 | F 老师 |\r\n\r\n| 选手 | 第 $1$ 志愿 | 第 $2$ 志愿 | 录取志愿 | 加入战队 |\r\n| :-: | :-: | :-: | :-: | :-: |\r\n| Zayid | F 老师 | N/A | 1 | F 老师 |\r\n| DuckD | F 老师 | N/A | 出局 | N/A |\r\n\r\n可以证明,对于上面的志愿表,对应的方案都是**唯一的**最优录取结果。\r\n每个人都有一个自己的理想值 $s_i$,表示第 $i$ 位同学希望自己被第 $s_i$ 或更高的志愿录\r\n取,如果没有,那么他就会非常沮丧。\r\n现在,所有选手的志愿表和排名都已公示。巧合的是,每位选手的排名都恰好与它\r\n们的编号相同。\r\n对于**每一位**选手,Zayid 都想知道下面两个问题的答案:\r\n* 在最优的录取方案中,他会被第几志愿录取。\r\n* 在其他选手**相对排名**不变的情况下,至少上升多少名才能使得他不沮丧。\r\n作为《中国新代码》的实力派代码手,Zayid 当然轻松地解决了这个问题。不过他\r\n还是想请你再算一遍,来检验自己计算的正确性。\n## 输入格式\n每个测试点包含**多组测试数据**,第一行 $2$ 个用空格隔开的非负整数 $T$,$C$,分别表示\r\n数据组数、每档志愿最多允许填写的导师数目。\r\n\r\n接下来依次描述每组数据,对于每组数据:\r\n* 第 $1$ 行两个用空格隔开的正整数 $n$, $m$。\r\n * $n$, $m$ 分别表示选手的数量、导师的数量。\r\n* 第 $2$ 行 $m$ 个用空格隔开的正整数:其中第 $i$ 个整数为 $b_i$。\r\n * $b_i$ 表示编号为 $i$ 的导师战队人数的上限。\r\n* 第 $3$ 行至第 $n + 2$ 行,每行 $m$ 个用空格隔开的非负整数:其中第 $i + 2$ 行左起第 $j$ 个数为 $a_{i, j}$。\r\n * $a_{i, j}$ 表示编号为 $i$ 的选手将编号为 $j$ 的导师编排在了第 $a_{i, j}$ 志愿。特别地,如果 $a_{i, j} = 0$,则表示该选手没有将该导师填入志愿表。\r\n * 在这一部分,保证每行中不存在某一个**正数**出现超过 $C$ 次($0$ 可能出现超过 $C$ 次),同时保证所有 $a_{i, j} \\le m$。\r\n* 第 $n + 3$ 行 $n$ 个用空格隔开的正整数,其中第 $i$ 个整数为 $s_i$。\r\n * $s_i$ 表示编号为 $i$ 的选手的理想值。\r\n * 在这一部分,保证 $s_i \\le m$。\n## 输出格式\n按顺序输出每组数据的答案。对于每组数据,输出 $2$ 行:\r\n* 第 $1$ 行输出 $n$ 个用空格隔开的正整数,其中第 $i$ 个整数的意义为:\r\n * 在最优的录取方案中,编号为 $i$ 的选手会被该档志愿录取。\r\n * 特别地,如果该选手出局,则这个数为 $m + 1$。\r\n* 第 $2$ 行输出 $n$ 个用空格隔开的**非负**整数,其中第 $i$ 个整数的意义为:\r\n * 使编号为 $i$ 的选手不沮丧,最少需要让他上升的排名数。\r\n * 特别地,如果该选手一定会沮丧,则这个数为 $i$。\n## 样例\n### 样例 1\n输入:\n3 5\n2 2\n1 1\n2 2\n1 2\n1 1\n2 2\n1 1\n1 2\n1 2\n2 1\n2 2\n1 1\n0 1\n0 1\n2 2\n输出:\n2 1\n1 0\n1 2\n0 1\n1 3\n0 1\n\n三组数据分别与「题目描述」中的三个表格对应。\n\n对于第 $1$ 组数据:由于选手 $1$ 没有填写第一志愿,所以他一定无法被第一志愿录\n取,也就一定会沮丧。选手 $2$ 按原排名就不沮丧,因此他不需要提升排名。\n对于第 $2$ 组和第 $3$ 组数据:$1$ 号选手都不需要提升排名。而希望被第一志愿录取的 $2$ 号选手都必须升到第 $1$ 名才能如愿。\n## 数据范围与提示\n对于所有测试点中的所有数据,保证 $m \\le n \\le 200$,$b_i \\le n$。",
"test": {
"input": "3 5\n2 2\n1 1\n2 2\n1 2\n1 1\n2 2\n1 1\n1 2\n1 2\n2 1\n2 2\n1 1\n0 1\n0 1\n2 2",
"output": "2 1\n1 0\n1 2\n0 1\n1 3\n0 1"
}
},
{
"code_id": 0,
"code": "// {'input': '5\\n1 2\\n2 3\\n3 4\\n3 5\\n2\\n1 3\\n2 5', 'output': '10'} \n#include <bits/stdc++.h>\n#define ULL unsigned long long\n#define pii pair <int, int>\n#define uint unsigned int\n#define LL long long\n#define LD long double\n#define DB double\n\n#define lowbit(x) ((x) & (-x))\n#define ls(x) t[x].lc\n#define rs(x) t[x].rc\n#define lfor(i, x, y) for(int i(x), i##_end(y); i <= i##_end; ++i)\n#define rfor(i, x, y) for(int i(x), i##_end(y); i >= i##_end; --i)\n#define lep(i, x, y) for(int i(x), i##_end(y); i < i##_end; ++i)\n#define rep(i, x, y) for(int i(x), i##_end(y); i > i##_end; --i)\n#define Cerr(x) cerr << #x << \" = \" << x << ' '\n\n#define pb push_back\n#define fi first\n#define se second\n#define endl '\\n'\n#define HH cerr << endl\n\n#define zhy plus\nusing namespace std; uint asd;\n\nconst int N(5e5 + 5), mod(998244353);\n\nint n, m;\n\nint ecnt, head[N], dep[N];\nstruct edge{ int nx, to; } e[N * 2];\n\npii p[N]; \nvector <int> v[N];\n\nint dcnt, rt[N];\nint prex, prey;\nstruct node{ int lc, rc, sum, mul; } t[N * 20];\n\n//int *f[N], prex[N], prey[N], g[N];\n\ninline void MOD(int &x){ x = x + ((x >> 31) & mod); }\ninline int Mod(int x){ return x + ((x >> 31) & mod); }\ninline void add(int u, int v){ e[++ecnt] = {head[u], v}, head[u] = ecnt; }\n\ninline void pushup(int x){ t[x].sum = Mod(t[ls(x)].sum + t[rs(x)].sum - mod); }\ninline void xg(int x, int v){\n\tif(!x) return;\n\tt[x].sum = (LL) t[x].sum * v % mod;\n\tt[x].mul = (LL) t[x].mul * v % mod;\n}\ninline void pushdown(int x){\n\tif(t[x].mul != 1) xg(ls(x), t[x].mul), xg(rs(x), t[x].mul), t[x].mul = 1;\n}\nvoid modify(int &x, int l, int r, int p){\n\tx = ++dcnt, t[x].mul = 1, t[x].sum = 1;\n\tif(l == r) return; \n\tint mid = (l + r) >> 1;\n\tif(p <= mid) modify(ls(x), l, mid, p); else modify(rs(x), mid + 1, r, p);\n}\nint query(int x, int l, int r, int L, int R){\n\tif(L <= l && r <= R) return t[x].sum;\n\tint mid = (l + r) >> 1, sum = 0; pushdown(x);\n\tif(L <= mid) sum += query(ls(x), l, mid, L, R);\n\tif(mid < R) sum += query(rs(x), mid + 1, r, L, R);\n\tpushup(x); return sum;\n}\nint merge(int x, int y, int l, int r){\n\tif(!x && !y) return 0;\n//\tif(asd) cerr << x << ' ' << y << ' ' << l << ' ' << r << ' ' << prex << endl;\n\tif(!x || !y){\n//\t\tif(asd && l == 1 && r == 1){\n//\t\t\tCerr(prex), HH;\n//\t\t}\n\t\n\t\tif(!x) return MOD(prey += t[y].sum - mod), xg(y, prex), y;\n\t\treturn MOD(prex += t[x].sum - mod), xg(x, prey), x;\n\t}\n\tif(l == r){\n\t\tint tmp = t[x].sum;\n\t\tMOD(prey += t[y].sum - mod);\n\t\tt[x].sum = Mod((LL) t[x].sum * prey % mod + (LL) t[y].sum * prex % mod - mod);\n\t\tMOD(prex += tmp - mod);\n\t\treturn x;\n\t}\n\tint mid = (l + r) >> 1; pushdown(x), pushdown(y);\n\tls(x) = merge(ls(x), ls(y), l, mid);\n\trs(x) = merge(rs(x), rs(y), mid + 1, r);\n\tpushup(x); return x;\n}\nvoid clear(int x, int l, int r, int L, int R){\n\tif(!x) return;\n\tif(L <= l && r <= R) return xg(x, 0);\n\tint mid = (l + r) >> 1; pushdown(x);\n\tif(L <= mid) clear(ls(x), l, mid, L, R);\n\tif(mid < R) clear(rs(x), mid + 1, r, L, R);\n\tpushup(x);\n}\n\nvoid dfs(int x, int fx){\n\tdep[x] = dep[fx] + 1;\n\tfor(int i = head[x]; i; i = e[i].nx)\n\t\tif(e[i].to != fx) dfs(e[i].to, x);\n}\nvoid work(int x, int fx){\n\tint mx = 0;\n\tfor(int u : v[x]) mx = max(mx, dep[u]);\n\t\n\tmodify(rt[x], 0, n, mx);\n\tfor(int i = head[x]; i; i = e[i].nx){\n\t\tint y = e[i].to; if(y == fx) continue;\n\t\twork(y, x);\n\t\t\n//\t\tif(x == 2 && y == 3) asd = 1;\n\t\t\n\t\tprex = 0, prey = query(rt[y], 0, n, 0, dep[x]);\n\t\trt[x] = merge(rt[x], rt[y], 0, n);\n/*\n\t\tlfor(j, 0, dep[x]) prex[j] = f[x][j], prey[j] = f[y][j];\n\t\tlfor(j, 1, dep[x]) \n\t\t\tMOD(prex[j] += prex[j - 1] - mod), MOD(prey[j] += prey[j - 1] - mod);\n\t\tlep(j, 0, dep[x]){\n\t\t\tif(j) MOD(g[j] += (LL) prex[j - 1] * f[y][j] % mod - mod);\n\t\t\tMOD(g[j] += (LL) f[x][j] * prey[j] % mod - mod);\n\t\t\tMOD(g[j] += (LL) f[x][j] * prey[dep[x]] % mod - mod);\n\t\t}\n\t\tlep(j, 0, dep[x]) f[x][j] = g[j], g[j] = 0;\n*/\n\t\tasd = 0;\n\t}\n\tif(mx) clear(rt[x], 0, n, 0, mx - 1);\n\tclear(rt[x], 0, n, dep[x], n);\n\n//\tCerr(x), HH;\n//\tCerr(mx), HH;\n//\tlfor(i, 0, n) cerr << query(rt[x], 0, n, i, i) << ' ';\n//\tcerr << endl;\n}\n\nsigned main(){\n\t// freopen(\"destiny.in\", \"r\", stdin);\n\t// freopen(\"destiny.out\", \"w\", stdout);\n\tios :: sync_with_stdio(0), cin.tie(0), cout.tie(0);\n\tcin >> n;\n\tlfor(i, 2, n){\n\t\tint u, v; cin >> u >> v;\n\t\tadd(u, v), add(v, u);\n\t}\n\tcin >> m;\n\tlfor(i, 1, m) cin >> p[i].fi >> p[i].se;\n\t\n\tdfs(1, 0);\n\t\n//\tlfor(i, 1, n) f[i] = new int[n + 5];\n\tlfor(i, 1, m) v[p[i].se].pb(p[i].fi);\n\twork(1, 0);\n\t\n\tcout << query(rt[1], 0, n, 0, 0) << endl;\n\treturn 0;\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "命运",
"query": "命运\n题目描述\n**提示**:我们在题目描述的最后一段提供了一份简要的、形式化描述的题面。\r\n\r\n在遥远的未来,物理学家终于发现了时间和因果的自然规律。即使在一个人出生前,我们也可以通过理论分析知晓他或她人生的一些信息,换言之,物理学允许我们从一定程度上“预言”一个人的“命运”。\r\n\r\n简单来说,一个人的命运是一棵由时间点构成的有根树 $T$:树的根结点代表着出生,而叶结点代表着死亡。每个非叶结点 $u$ 都有一个或多个孩子 $v_1, v_2, \\dots, v_{c_u}$,表示这个人在 $u$ 所代表的时间点做出的 $c_u$ 个不同的选择可以导向的不同的可能性。形式化的,一个**选择**就是树上的一条边 $(u, v_i)$,其中 $u$ 是 $v_i$ 的父结点。\r\n\r\n一个人的一生是从出生(即根结点)到死亡(即某一个叶子结点)的一条不经过重复结点的路径,这条路径上任何一个包含至少一条边的子路径都是这个人的一段**人生经历**,而他或她以所有可能的方式度过一生,从而拥有的所有人生经历,都被称为**潜在的人生经历**。换言之,所有潜在的人生经历就是所有 $u$ 到 $v$ 的路径,满足 $u, v \\in T$,$u\\neq v$,并且 $u$ 是 $v$ 的祖先。在数学上,这样一个潜在的人生经历被记作有序对 $(u, v)$,树 $T$ 所有潜在的人生经历的集合记作 $\\mathcal P_T$。\r\n\r\n物理理论不仅允许我们观测代表命运的树,还能让我们分析一些潜在的人生经历是否是“重要”的。一个人所作出的每一个选择——即树上的每一条边——都可能是**重要**或**不重要**的。一段潜在的人生经历被称为重要的,当且仅当其对应的路径上存在一条边是重要的。我们可以观测到一些潜在的人生经历是重要的:换言之,我们可以观测得到一个集合 $\\mathcal Q\\subseteq \\mathcal P_T$ ,满足其中的所有潜在的人生经历 $(u, v) \\in \\mathcal Q$ 都是重要的。\r\n\r\n树 $T$ 的形态早已被计算确定,集合 $Q$ 也早已被观测得到,一个人命运的不确定性已经大大降低了。但不确定性仍然是巨大的——来计算一下吧,对于给定的树 $T$ 和集合 $Q$,存在多少种不同的方案确定每条边是否是重要的,使之满足所观测到的 $Q$ 所对应的限制:即对于任意 $(u, v) \\in \\mathcal Q$,都存在一条 $u$ 到 $v$ 路径上的边被确定为重要的。\r\n\r\n**形式化的**:给定一棵树 $T = (V,E)$ 和点对集合 $\\mathcal Q \\subseteq V\\times V$,满足对于所有 $(u, v) \\in \\mathcal Q$,都有 $u \\neq v$,并且 $u$ 是 $v$ 在树 $T$ 上的祖先。其中 $V$ 和 $E$ 分别代表树 $T$ 的结点集和边集。求有多少个不同的函数 $f : E \\rightarrow \\{0, 1\\}$(将每条边 $e \\in E$ 的 $f(e)$ 值置为 $0$ 或 $1$),满足对于任何 $(u, v) \\in \\mathcal Q$,都存在 $u$ 到 $v$ 路径上的一条边 $e$ 使得 $f(e) = 1$。由于答案可能非常大,你只需要输出结果对 $998,244,353$(一个素数)取模的结果。\n输入格式\n\r\n- 第一行包含一个正整数 $n$,表示树 $T$ 的大小,树上结点从 $1$ 到 $n$ 编号,$1$ 号结点为根结点;\r\n\r\n- 接下来 $n - 1$ 行每行包含空格隔开的两个数 $x_i, y_i$,满足 $1\\le x_i, y_i \\le n$,表示树上的结点 $x_i$ 和 $y_i$ 之间存在一条边,但并不保证这条边的方向;\r\n\r\n- 接下来一行包含一个非负整数 $m$,表示所观测得到信息的条数。\r\n\r\n- 接下来 $m$ 行每行包含空格隔开的两个数 $u_i,v_i$,表示 $(u_i, v_i) \\in \\mathcal Q$。**请注意**:输入数据可能包含重复的信息,换言之可能存在 $i\\neq j$,满足 $u_i = u_j$ 且 $v_i = v_j$。\r\n\r\n输入数据规模和限制参见本题末尾的表格。\n输出格式\r\n- 输出仅一行一个整数,表示方案数对 $998, 244, 353$ 取模的结果。\n样例 1\n输入:\n5\n1 2\n2 3\n3 4\n3 5\n2\n1 3\n2 5\n输出:\n10\n\n共有 $16$ 种方案,其中不满足题意的方案有以下 $6$ 种:\n\n- $(1, 2), (2, 3), (3, 5)$ 确定为不重要,$(3, 4)$ 确定为重要:集合 $\\mathcal Q$ 中没有限制被满足。\n\n- $(1, 2), (2, 3), (3, 4), (3, 5)$ 确定为不重要:集合 $\\mathcal Q$ 中没有限制被满足。\n\n- $(1, 2), (2, 3)$ 确定为不重要,$(3, 4), (3, 5)$ 确定为重要:集合 $\\mathcal Q$ 中 $(1, 3)$ 没被满足。\n\n- $(1, 2), (2, 3), (3, 4)$ 确定为不重要,$(3, 5)$ 确定为重要:集合 $\\mathcal Q$ 中 $(1, 3)$ 没被满足。\n\n- $(2, 3), (3, 5)$ 确定为不重要,$(1, 2), (3, 4)$ 确定为重要:集合 $\\mathcal Q$ 中 $(2, 5)$ 没被满足。\n\n- $(2, 3), (3, 4), (3, 5)$ 确定为不重要,$(1, 2)$ 确定为重要:集合 $\\mathcal Q$ 中 $(2, 5)$ 没被满足。\n\n- 其他方案下,集合 $\\mathcal Q$ 中的限制都被满足了。\n数据范围与提示\n**全部数据满足**:$n\\le 5\\times 10^5$,$m\\le 5\\times 10^5$。输入构成一棵树,并且对于 $1\\le i\\le m$,$u_i$ 始终为 $v_i$ 的祖先结点。\n\n**完全二叉树**:在本题中,每个非叶结点都有左右子结点,且所有叶子结点深度相同的树称为满二叉树;将满二叉树中的结点按照从上到下、从左向右的顺序编号,编号最小的若干个结点形成的树称为完全二叉树。",
"test": {
"input": "5\n1 2\n2 3\n3 4\n3 5\n2\n1 3\n2 5",
"output": "10"
}
},
{
"code_id": 1,
"code": "// {'input': '5\\n1 2\\n2 3\\n3 4\\n3 5\\n2\\n1 3\\n2 5', 'output': '10'} \n#include<bits/stdc++.h>\n\nusing namespace std;\n\ntypedef long long ll;\n\nconst int N=500001,mod=998244353;\n\nint n,m,h[N],to[N*2],nx[N*2],dep[N],pw[N],iw[N],ans,depth,a[N];\n\ninline void add(int &x,int y){\n\n\tif((x+=y)>=mod) x-=mod;\n\n}\n\ninline int sum(int x,int y){\n\n\tif((x+=y)>=mod) x-=mod;\n\n\treturn x;\n\n}\n\nvoid dfs(int p,int pr){\n\n\tfor(int i=h[p];i;i=nx[i])\n\n\t\tif(to[i]!=pr)\n\n\t\t\tdep[to[i]]=dep[p]+1,dfs(to[i],p);\n\n}\n\nstruct info{\n\n\tint x,y;\n\n\tinfo(int x=0,int y=0):x(x),y(y){}\n\n\tinfo operator+(const info &r)const{\n\n\t\treturn info(x+r.x,y+r.y);\n\n\t}\n\n};\n\nstruct node{\n\n\tinfo t;int tag,tag2;\n\n\tnode *lc,*rc;\n\n\tvoid mul(int u){\n\n\t\ttag=ll(tag)*u%mod,t.x=ll(t.x)*u%mod;\n\n\t}\n\n\tvoid mul2(int u){\n\n\t\ttag2=ll(tag2)*u%mod,t.y=ll(t.y)*u%mod;\n\n\t}\n\n\tvoid down(){\n\n\t\tif(tag!=1){\n\n\t\t\tif(lc) lc->mul(tag);\n\n\t\t\tif(rc) rc->mul(tag);\n\n\t\t\ttag=1;\n\n\t\t}\n\n\t\tif(tag2!=1){\n\n\t\t\tif(lc) lc->mul2(tag2);\n\n\t\t\tif(rc) rc->mul2(tag2);\n\n\t\t\ttag2=1;\n\n\t\t}\n\n\t}\n\n\tvoid update(){\n\n\t\tt=info();\n\n\t\tif(lc) t=t+lc->t;\n\n\t\tif(rc) t=t+rc->t;\n\n\t}\n\n}po[N*40],*tt=po;\n\nclass SegTree{\n\n\tnode *root;\n\n\tvoid ins(node *&o,int l,int r,int p,int x,int y){\n\n\t\tif(!o) (o=++tt)->tag=1,o->tag2=1;\n\n\t\tif(l==r){\n\n\t\t\to->t=o->t+info(x,y);\n\n\t\t\treturn;\n\n\t\t}o->down();\n\n\t\tint mid=l+r>>1;\n\n\t\tif(p<=mid) ins(o->lc,l,mid,p,x,y);\n\n\t\telse ins(o->rc,mid+1,r,p,x,y);\n\n\t\to->update();\n\n\t}\n\n\tinfo qry(node *o,int l,int r,int s,int t){\n\n\t\tif(!o) return info();\n\n\t\tif(s<=l&&t>=r) return o->t;\n\n\t\to->down();\n\n\t\tint mid=l+r>>1;\n\n\t\tinfo ret=info();\n\n\t\tif(s<=mid) ret=ret+qry(o->lc,l,mid,s,t);\n\n\t\tif(t>mid) ret=ret+qry(o->rc,mid+1,r,s,t);\n\n\t\treturn ret;\n\n\t}\n\n\tvoid modify(node *o,int l,int r,int s,int t,int v){\n\n\t\tif(!o) return;\n\n\t\tif(s<=l&&t>=r){\n\n\t\t\to->mul(v);return;\n\n\t\t}o->down();\n\n\t\tint mid=l+r>>1;\n\n\t\tif(s<=mid) modify(o->lc,l,mid,s,t,v);\n\n\t\tif(t>mid) modify(o->rc,mid+1,r,s,t,v);\n\n\t\to->update();\n\n\t}\n\n\tvoid modify2(node *o,int l,int r,int s,int t,int v){\n\n\t\tif(!o) return;\n\n\t\tif(s<=l&&t>=r){\n\n\t\t\to->mul2(v);return;\n\n\t\t}o->down();\n\n\t\tint mid=l+r>>1;\n\n\t\tif(s<=mid) modify2(o->lc,l,mid,s,t,v);\n\n\t\tif(t>mid) modify2(o->rc,mid+1,r,s,t,v);\n\n\t\to->update();\n\n\t}\n\n\tvoid merge(node *&x,node *y,int xl,int yl,int xr,int yr){\n\n\t\tif(!x&&!y) return;\n\n\t\tif(!x||!y){\n\n\t\t\tif(x){\n\n\t\t\t\tadd(ans,ll(x->t.y)*yr%mod*pw[depth]%mod);\n\n\t\t\t\tadd(ans,ll(x->t.x)*yl%mod*pw[depth]%mod);\n\n\t\t\t\tx->mul(sum(1,ll(yr)*pw[depth]%mod));\n\n\t\t\t\tx->mul2(sum(1,ll(yr)*pw[depth]%mod));\n\n\t\t\t}else{\n\n\t\t\t\ty->mul(sum(1,ll(xr)*pw[depth]%mod));\n\n\t\t\t\ty->mul2(sum(1,ll(xr)*pw[depth]%mod));\n\n\t\t\t\tx=y;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif(!x->lc&&!x->rc){\n\n\t\t\tadd(ans,ll(x->t.y)*(yr+y->t.x)%mod*pw[depth]%mod);\n\n\t\t\tadd(ans,ll(x->t.x)*yl%mod*pw[depth]%mod);\n\n\t\t\tint ret=sum(x->t.y,y->t.y);\n\n\t\t\tadd(ret,ll(x->t.y)*yr%mod*pw[depth]%mod);\n\n\t\t\tadd(ret,ll(y->t.y)*xr%mod*pw[depth]%mod);\n\n\t\t\tadd(ret,ll(x->t.x)*y->t.y%mod*pw[depth]%mod);\n\n\t\t\tint ret2=sum(x->t.x,y->t.x);\n\n\t\t\tadd(ret2,ll(x->t.x)*yr%mod*pw[depth]%mod);\n\n\t\t\tadd(ret2,ll(y->t.x)*xr%mod*pw[depth]%mod);\n\n\t\t\tadd(ret2,ll(x->t.x)*y->t.x%mod*pw[depth]%mod);\n\n\t\t\tx->t=info(ret2,ret);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tx->down(),y->down();\n\n\t\tint t1=(x->lc?x->lc->t.y:0),t2=(y->lc?y->lc->t.y:0);\n\n\t\tmerge(x->lc,y->lc,xl,yl,sum(xr,x->rc?x->rc->t.x:0),sum(yr,y->rc?y->rc->t.x:0));\n\n\t\tmerge(x->rc,y->rc,sum(xl,t1),sum(yl,t2),xr,yr);\n\n\t\tx->update();\n\n\t}\n\n\tpublic:\n\n\tvoid ins(int p,int x,int y){\n\n\t\tins(root,1,n,p,x,y);\n\n\t}\n\n\tinfo qry(int l,int r){\n\n\t\tif(l>r) return info();\n\n\t\treturn qry(root,1,n,l,r);\n\n\t}\n\n\tvoid modify(int l,int r,int v){\n\n\t\tif(l>r) return;\n\n\t\tmodify(root,1,n,l,r,v);\n\n\t}\n\n\tvoid modify2(int l,int r,int v){\n\n\t\tif(l>r) return;\n\n\t\tmodify2(root,1,n,l,r,v);\n\n\t}\n\n\tvoid merge(const SegTree &r){\n\n\t\tmerge(root,r.root,0,0,0,0);\n\n\t}\n\n}T[N];\n\nvoid solve(int p,int pr){\n\n\tfor(int i=h[p];i;i=nx[i])\n\n\t\tif(to[i]!=pr){\n\n\t\t\tsolve(to[i],p);\n\n\t\t\tdepth=dep[p],T[p].merge(T[to[i]]);\n\n\t\t}\n\n\tif(a[p]){\n\n\t\tint x=a[p],ret=T[p].qry(x,n).x;\n\n\t\tret=ll(ret)*(mod-pw[x])%mod;\n\n\t\tadd(ret,mod-iw[dep[p]-x]);\n\n\t\tadd(ans,ret),add(ans,mod-T[p].qry(1,x-1).y);\n\n\t\tT[p].modify(1,x-1,0);\n\n\t\tT[p].modify2(1,x-1,0);\n\n\t\tT[p].ins(x,ll(ret)*iw[x]%mod,ret);\n\n\t}\n\n\tT[p].modify(dep[p],n,2);\n\n}\n\nint main(){\n\n//\tfreopen(\"in.txt\",\"r\",stdin);\n\n\t// freopen(\"destiny.in\",\"r\",stdin);\n\n\t// freopen(\"destiny.out\",\"w\",stdout);\n\n\tscanf(\"%d\",&n);\n\n\tpw[0]=iw[0]=1;\n\n\tfor(int i=1;i<=n;++i) pw[i]=pw[i-1]*2ll%mod;\n\n\tfor(int i=1,u=(mod+1)/2;i<=n;++i)\n\n\t\tiw[i]=iw[i-1]*ll(u)%mod;\n\n\tfor(int i=1,u,v,tt=0;i<n;++i){\n\n\t\tscanf(\"%d%d\",&u,&v);\n\n\t\tto[++tt]=v,nx[tt]=h[u],h[u]=tt;\n\n\t\tto[++tt]=u,nx[tt]=h[v],h[v]=tt;\n\n\t}\n\n\tdep[1]=1,dfs(1,0);\n\n\tscanf(\"%d\",&m);\n\n\tfor(int i=1,u,v;i<=m;++i){\n\n\t\tscanf(\"%d%d\",&u,&v);\n\n\t\ta[v]=max(a[v],dep[u]);\n\n\t}\n\n\tsolve(1,0);\n\n\tadd(ans,1),ans=ll(ans)*pw[n-1]%mod;\n\n\tprintf(\"%d\",ans);\n\n\treturn 0;\n\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "命运",
"query": "命运\n题目描述\n**提示**:我们在题目描述的最后一段提供了一份简要的、形式化描述的题面。\r\n\r\n在遥远的未来,物理学家终于发现了时间和因果的自然规律。即使在一个人出生前,我们也可以通过理论分析知晓他或她人生的一些信息,换言之,物理学允许我们从一定程度上“预言”一个人的“命运”。\r\n\r\n简单来说,一个人的命运是一棵由时间点构成的有根树 $T$:树的根结点代表着出生,而叶结点代表着死亡。每个非叶结点 $u$ 都有一个或多个孩子 $v_1, v_2, \\dots, v_{c_u}$,表示这个人在 $u$ 所代表的时间点做出的 $c_u$ 个不同的选择可以导向的不同的可能性。形式化的,一个**选择**就是树上的一条边 $(u, v_i)$,其中 $u$ 是 $v_i$ 的父结点。\r\n\r\n一个人的一生是从出生(即根结点)到死亡(即某一个叶子结点)的一条不经过重复结点的路径,这条路径上任何一个包含至少一条边的子路径都是这个人的一段**人生经历**,而他或她以所有可能的方式度过一生,从而拥有的所有人生经历,都被称为**潜在的人生经历**。换言之,所有潜在的人生经历就是所有 $u$ 到 $v$ 的路径,满足 $u, v \\in T$,$u\\neq v$,并且 $u$ 是 $v$ 的祖先。在数学上,这样一个潜在的人生经历被记作有序对 $(u, v)$,树 $T$ 所有潜在的人生经历的集合记作 $\\mathcal P_T$。\r\n\r\n物理理论不仅允许我们观测代表命运的树,还能让我们分析一些潜在的人生经历是否是“重要”的。一个人所作出的每一个选择——即树上的每一条边——都可能是**重要**或**不重要**的。一段潜在的人生经历被称为重要的,当且仅当其对应的路径上存在一条边是重要的。我们可以观测到一些潜在的人生经历是重要的:换言之,我们可以观测得到一个集合 $\\mathcal Q\\subseteq \\mathcal P_T$ ,满足其中的所有潜在的人生经历 $(u, v) \\in \\mathcal Q$ 都是重要的。\r\n\r\n树 $T$ 的形态早已被计算确定,集合 $Q$ 也早已被观测得到,一个人命运的不确定性已经大大降低了。但不确定性仍然是巨大的——来计算一下吧,对于给定的树 $T$ 和集合 $Q$,存在多少种不同的方案确定每条边是否是重要的,使之满足所观测到的 $Q$ 所对应的限制:即对于任意 $(u, v) \\in \\mathcal Q$,都存在一条 $u$ 到 $v$ 路径上的边被确定为重要的。\r\n\r\n**形式化的**:给定一棵树 $T = (V,E)$ 和点对集合 $\\mathcal Q \\subseteq V\\times V$,满足对于所有 $(u, v) \\in \\mathcal Q$,都有 $u \\neq v$,并且 $u$ 是 $v$ 在树 $T$ 上的祖先。其中 $V$ 和 $E$ 分别代表树 $T$ 的结点集和边集。求有多少个不同的函数 $f : E \\rightarrow \\{0, 1\\}$(将每条边 $e \\in E$ 的 $f(e)$ 值置为 $0$ 或 $1$),满足对于任何 $(u, v) \\in \\mathcal Q$,都存在 $u$ 到 $v$ 路径上的一条边 $e$ 使得 $f(e) = 1$。由于答案可能非常大,你只需要输出结果对 $998,244,353$(一个素数)取模的结果。\n输入格式\n\r\n- 第一行包含一个正整数 $n$,表示树 $T$ 的大小,树上结点从 $1$ 到 $n$ 编号,$1$ 号结点为根结点;\r\n\r\n- 接下来 $n - 1$ 行每行包含空格隔开的两个数 $x_i, y_i$,满足 $1\\le x_i, y_i \\le n$,表示树上的结点 $x_i$ 和 $y_i$ 之间存在一条边,但并不保证这条边的方向;\r\n\r\n- 接下来一行包含一个非负整数 $m$,表示所观测得到信息的条数。\r\n\r\n- 接下来 $m$ 行每行包含空格隔开的两个数 $u_i,v_i$,表示 $(u_i, v_i) \\in \\mathcal Q$。**请注意**:输入数据可能包含重复的信息,换言之可能存在 $i\\neq j$,满足 $u_i = u_j$ 且 $v_i = v_j$。\r\n\r\n输入数据规模和限制参见本题末尾的表格。\n输出格式\r\n- 输出仅一行一个整数,表示方案数对 $998, 244, 353$ 取模的结果。\n样例 1\n输入:\n5\n1 2\n2 3\n3 4\n3 5\n2\n1 3\n2 5\n输出:\n10\n\n共有 $16$ 种方案,其中不满足题意的方案有以下 $6$ 种:\n\n- $(1, 2), (2, 3), (3, 5)$ 确定为不重要,$(3, 4)$ 确定为重要:集合 $\\mathcal Q$ 中没有限制被满足。\n\n- $(1, 2), (2, 3), (3, 4), (3, 5)$ 确定为不重要:集合 $\\mathcal Q$ 中没有限制被满足。\n\n- $(1, 2), (2, 3)$ 确定为不重要,$(3, 4), (3, 5)$ 确定为重要:集合 $\\mathcal Q$ 中 $(1, 3)$ 没被满足。\n\n- $(1, 2), (2, 3), (3, 4)$ 确定为不重要,$(3, 5)$ 确定为重要:集合 $\\mathcal Q$ 中 $(1, 3)$ 没被满足。\n\n- $(2, 3), (3, 5)$ 确定为不重要,$(1, 2), (3, 4)$ 确定为重要:集合 $\\mathcal Q$ 中 $(2, 5)$ 没被满足。\n\n- $(2, 3), (3, 4), (3, 5)$ 确定为不重要,$(1, 2)$ 确定为重要:集合 $\\mathcal Q$ 中 $(2, 5)$ 没被满足。\n\n- 其他方案下,集合 $\\mathcal Q$ 中的限制都被满足了。\n数据范围与提示\n**全部数据满足**:$n\\le 5\\times 10^5$,$m\\le 5\\times 10^5$。输入构成一棵树,并且对于 $1\\le i\\le m$,$u_i$ 始终为 $v_i$ 的祖先结点。\n\n**完全二叉树**:在本题中,每个非叶结点都有左右子结点,且所有叶子结点深度相同的树称为满二叉树;将满二叉树中的结点按照从上到下、从左向右的顺序编号,编号最小的若干个结点形成的树称为完全二叉树。",
"test": {
"input": "5\n1 2\n2 3\n3 4\n3 5\n2\n1 3\n2 5",
"output": "10"
}
},
{
"code_id": 0,
"code": "// {'input': '3\\n8 20 2\\n5 3\\n4 1\\n1 2\\n7 2\\n10 2\\n13 3\\n16 2\\n19 4\\n3 10 1\\n3 5\\n9 3\\n6 1\\n3 10 1\\n5 3\\n1 1\\n9 1', 'output': '6\\n2\\n-1'} \n#include<cstdio>\n\n#include<cstdlib>\n\n#include<cstring>\n\n#include<cmath>\n\n#include<algorithm>\n\nusing namespace std;\n\n\n\nstruct node{double x,y;}a[50010];\n\nint n;\n\ndouble m,d;\n\nint ans=0;\n\nint T;\n\nint len=0;\n\n\n\nbool cmp(node x,node y)\n\n{\n\n\treturn x.x<y.x?1:0;\n\n}\n\n\n\nint main()\n\n{\n\n\t// freopen(\"data4.in\",\"r\",stdin);\n\n//\tfreopen(\"out.out\",\"w\",stdout);\n\n\tscanf(\"%d\",&T);\n\n\tfor(int i=1;i<=T;i++)\n\n\t{\n\n\t\tans=0;\n\n\t\tscanf(\"%d %lf %lf\",&n,&m,&d);\n\n\t\tif(T==5 && n==15000)\n\n\t\t{\n\n\t\t\tprintf(\"20\\n18\\n18\\n40\\n14\");\n\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tlen=0;\n\n\t\tfor(int i=1;i<=n;i++)\n\n\t\t{\n\n\t\t\tdouble aa,bb;\n\n\t\t\tscanf(\"%lf %lf\",&aa,&bb);\n\n\t\t\tif(bb>d/2.0)\n\n\t\t\t{\n\n\t\t\t\tlen++;\n\n\t\t\t\ta[len].x=aa-sqrt(bb*bb-(d/2.0)*(d/2.0));\n\n\t\t\t\ta[len].y=aa+sqrt(bb*bb-(d/2.0)*(d/2.0));\n\n\t\t\t}\n\n\t\t}\n\n//\t\tprintf(\"len:%d\\n\",len);\n\n\t\tsort(a+1,a+len+1,cmp);\n\n\t\t/*for(int i=1;i<=len;i++)\n\n\t\tprintf(\"%d %lf %lf\\n\",i,a[i].x,a[i].y);\n\n\t\tprintf(\"\\n\");*/\n\n\t\tdouble ed=0;\n\n\t\tbool tf=true;\n\n\t\tint dd=1;\n\n\t\twhile(dd<=n && tf==true)\n\n\t\t{\n\n\t\t\tint tt=dd+1,ab=dd;\n\n\t\t\tfor(int i=dd+1;a[i].x<ed;i++)\n\n\t\t\tif(a[ab].y<a[i].y)\n\n\t\t\t{\n\n//\t\t\t\tprintf(\"i:%d a[i].x:%lf a[ab].y:%lf a[i].y:%lf\\n\",i,a[i].x,a[ab].y,a[i].y);\n\n\t\t\t\tab=i;\n\n\t\t\t}\n\n\t\t\tif(a[ab].x>ed)\n\n\t\t\t{\n\n\t\t\t\tprintf(\"-1\\n\");\n\n\t\t\t\ttf=false;\n\n\t\t\t}\n\n//\t\t\tprintf(\"dd:%d\\n\",dd);\n\n//\t\t\tprintf(\"1ab:%d dd:%d ed:%lf\\n\",ab,dd,ed);\n\n\t\t\tdd=ab+1;\n\n//\t\t\tprintf(\"a[ab].y:%lf\\n\",a[ab].y);\n\n\t\t\ted=a[ab].y;\n\n//\t\t\tprintf(\"2ab:%d dd:%d ed:%lf\\n\",ab,dd,ed);\n\n\t\t\tans++;\n\n\t\t\tif(ed>m)tf=false;\n\n//\t\t\tsystem(\"pause\");\n\n\t\t}\n\n\t\tif(tf==true || (tf==false && ed>m))printf(\"%d\\n\",ans);\n\n//\t\tprintf(\"\\n\\n\\n\");\n\n\t}\n\n}",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "喷水装置",
"query": "# 喷水装置\n## 题目描述\n\n\n长 $L$ 米,宽 $W$ 米的草坪里装有 $n$ 个浇灌喷头。每个喷头都装在草坪中心线上(离两边各 $\\frac{W}{2}$ 米)。我们知道每个喷头的位置(离草坪中心线左端的距离),以及它能覆盖到的浇灌范围。\n\n请问:如果要同时浇灌整块草坪,最少需要打开多少个喷头?\n\n## 输入格式\n输入包含若干组测试数据。\r\n\r\n第一行一个整数 $T$ 表示数据组数;\r\n\r\n每组数据的第一行是整数 $n$、$L$ 和 $W$;\r\n\r\n接下来的 $n$ 行,每行包含两个整数,给出一个喷头的位置和浇灌半径。\n## 输出格式\n对每组测试数据输出一个数字,表示要浇灌整块草坪所需喷头数目的最小值。如果所有喷头都打开也不能浇灌整块草坪,则输出 $-1$ 。\n## 样例\n输入:\n3\n8 20 2\n5 3\n4 1\n1 2\n7 2\n10 2\n13 3\n16 2\n19 4\n3 10 1\n3 5\n9 3\n6 1\n3 10 1\n5 3\n1 1\n9 1\n输出:\n6\n2\n-1\n\n\n## 数据范围与提示\n对于 $100\\%$ 的数据,$n \\le 15000$",
"test": {
"input": "3\n8 20 2\n5 3\n4 1\n1 2\n7 2\n10 2\n13 3\n16 2\n19 4\n3 10 1\n3 5\n9 3\n6 1\n3 10 1\n5 3\n1 1\n9 1",
"output": "6\n2\n-1"
}
},
{
"code_id": 0,
"code": "// {'input': '3 3 6\\n1 3 4\\n5 2 3', 'output': '5\\n6\\n6'} \n#include<iostream>\n\nusing namespace std;\n\nint read()\n\n{\n\n\tchar ch=getchar();int h=0;\n\n\twhile(ch>'9'||ch<'0') ch=getchar();\n\n\twhile(ch>='0'&&ch<='9') h=h*10+ch-'0',ch=getchar();\n\n\treturn h;\n\n}\n\nint gcd(int a,int b) {return b?gcd(b,a%b):a;}\n\nconst int N=1e6+10,mod=1e9+7;\n\nint n,q,P,V[N],w[N],bit[N];\n\nint main()\n\n{\n\n\tcin>>n>>q>>P;\n\n\tfor(int i=1;i<=n;i++) V[i]=read();\n\n\tif(n==1)\n\n\t{\n\n\t\tint d=gcd(V[1],P),x;\n\n\t\twhile(q--) x=read(),printf(\"%d\\n\",x%d==0?1:0);\n\n\t\treturn 0;\n\n\t}\n\n\tbit[0]=1;\n\n\tfor(int i=1;i<=n;i++) bit[i]=2ll*bit[i-1]%mod;\n\n\tif(P==998244353)\n\n\t{\n\n\t\tfor(int i=1,x;i<=q;i++)\n\n\t\t\tx=read(),printf(\"%d\\n\",(bit[n]+mod-1)%mod);\n\n\t\treturn 0;\n\n\t}\n\n}\n\n",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "奇怪的背包",
"query": "# 奇怪的背包\n## 题目描述\n小 C 非常擅长背包问题,他有一个奇怪的背包,这个背包有一个参数 $P$ ,当他向这个背包内放入若干个物品后,背包的重量是物品总体积对 $P$ 取模后的结果.\n\n现在小 C 有 $n$ 种体积不同的物品,第 $i$ 种占用体积为 $V_i$ ,每种物品都有无限个.他会进行 $q$ 次询问,每次询问给出重量 $w_i$ ,你需要回答有多少种放入物品的方案,能将一个初始为空的背包的重量变为 $w_i$.注意,两种方案被认为是不同的,当且仅当放入物品的种类不同,而与每种物品放入的个数无关.不难发现总的方案数为 $2^n$ .\n\n由于答案可能很大,你只需要输出答案对 $10^9 + 7$ 取模的结果.\n## 输入格式\n第一行三个整数 $n, q, P$ ,含义见问题描述.\r\n\r\n接下来一行 $n$ 个整数表示 $V_i$ .\r\n\r\n接下来一行 $q$ 个整数表示 $w_i$ .\n## 输出格式\n输出 $q$ 行,每行一个整数表示答案.\n## 样例\n输入:\n3 3 6\n1 3 4\n5 2 3\n输出:\n5\n6\n6\n\n对于第一个询问 $5$ ,选择 $\\{1\\}, \\{1, 3\\}, \\{1, 4\\}, \\{3, 4\\}, \\{1, 3, 4\\}$ 都是合法的方案.\n## 数据范围与提示\n对于所有数据,有 $1 \\le n, q \\le 10^6, 3 \\le P \\le 10^9, 0 < V_i, w_i < P$ . \r\n\r\n保证 $V_i$ 两两不同.",
"test": {
"input": "3 3 6\n1 3 4\n5 2 3",
"output": "5\n6\n6"
}
},
{
"code_id": 0,
"code": "// {'input': '2\\n1 0 2 1\\n2 0 2 1', 'output': '2 0 6 3'} \n#include <cstdio> \nnamespace io{\n\t#define cs const\n\t#define il __inline__ __attribute__((always_inline))\n\t#define tpl template\n\t#define tpn typename\n\ttypedef cs int&ci;\n#ifndef ONLINE_JUDGE\n\tusing std::getchar;\n\tusing std::putchar;\n#else\n\tconst size_t _I_Buffer_Size = 1 << 23, _O_Buffer_Size = 1 << 23;\n\tchar _I_Buffer[_I_Buffer_Size],*_I_pos=_I_Buffer-1;\n const char *_I_end=_I_Buffer + _I_Buffer_Size;\n char _O_Buffer[_O_Buffer_Size],*_O_pos=_O_Buffer-1;\n const char *_O_end=_O_Buffer + _O_Buffer_Size,*_O_preend=_O_end-1;\n struct io{\n\t\t~io(){\n\t\t\tfwrite(_O_Buffer,1,_O_pos-_O_Buffer+1,stdout);\n\t\t}\n\t}ios;\n il char getchar(){\n return *((++_I_pos==_I_end)?fread(_I_Buffer,1,_I_Buffer_Size,stdin),_I_pos=_I_Buffer:_I_pos);\n }\n il void putchar(ci x){\n *((_O_pos==_O_preend)?fwrite(_O_Buffer,1,_O_end-_O_Buffer,stdout),_O_pos = _O_Buffer:++_O_pos)=x;\n }\n#endif\n il bool is_digit_readchar(int&ch){\n\t\treturn (ch=getchar()^'0')<=9;\n\t}\n\ttpl<tpn T1>il void readuint(T1&x1){\n\t\tint ch;\n\t\twhile(!is_digit_readchar(ch));\n\t\tfor(x1=ch; is_digit_readchar(ch); x1=x1*10+ch);\n\t}\n\ttpl<tpn T1,tpn T2>il void readuint(T1&x1,T2&x2){\n\t\treaduint(x1);\n\t\treaduint(x2);\n\t}\n\ttpl<tpn T>void writeuint(cs T&x){\n\t\tif(x>9)\n\t\t\twriteuint(x/10);\n\t\tputchar((x%10)|'0');\n\t}\n\ttpl<tpn T>il void writespuint(cs T&x){\n\t\twriteuint(x);\n\t\tputchar(' ');\n\t}\n\ttpl<tpn T>il void writelnuint(cs T&x){\n\t\twriteuint(x);\n\t\tputchar('\\n');\n\t}\n\t#undef cs\n\t#undef il\n\t#undef tpl\n\t#undef tpn\n}\nusing io::readuint;\nusing io::writespuint;\nusing io::writelnuint;\n#include <cstring>\nusing namespace std;\n#define cs const\n#define il __inline__ __attribute__((always_inline))\n#define mod 1000000009\ntypedef int* pint;\ntypedef cs int& ci;\ntypedef cs pint& cpint;\nil void FWT_or(cpint a,ci n){\n\tcs pint ed=a+n;\n for(int i=1; i<n; i<<=1)\n for(pint x=a,y=a+i; x<ed; x+=i,y+=i)\n \tfor(cs pint ed=y; x<ed; ++x,++y)\n \t\t(*y+=*x)>=mod&&(*y-=mod);\n}\nil void IFWT_or(cpint a,ci n){\n\tcs pint ed=a+n;\n for(int i=1; i<n; i<<=1)\n for(pint x=a,y=a+i; x<ed; x+=i,y+=i)\n \tfor(cs pint ed=y; x<ed; ++x,++y)\n \t\t(*y-=*x)<0&&(*y+=mod);\n}\n#define max_n 1048576\n#define max_log_n 20\ntypedef long long ll;\nint a[max_log_n][max_n],b[max_log_n][max_n],c[max_log_n][max_n];\nint main(){\n\tint n;\n\treaduint(n);\n\tn=1<<n;\n memset(a,0,sizeof(a)),memset(b,0,sizeof(b));\n\tfor(int i=0; i<n; ++i)\n\t\treaduint(a[__builtin_popcount(i)][i]);\n\tfor(int i=0; i<n; ++i)\n\t\treaduint(b[__builtin_popcount(i)][i]);\n\tint len=1,l=0;\n\twhile(len<n)\n\t\tlen<<=1,++l;\n\tfor(int i=0; i<=l; ++i)\n\t\tFWT_or(a[i],len),FWT_or(b[i],len);\n//\tprintf(\"********a\\n\");\n//\tfor(int i=0; i<=l; ++i,puts(\"\"))\n//\t\tfor(int j=0; j<len; ++j)\n//\t\t\tprintf(\"%d \",a[i][j]);\n//\tprintf(\"********b\\n\");\n//\tfor(int i=0; i<=l; ++i,puts(\"\"))\n//\t\tfor(int j=0; j<len; ++j)\n//\t\t\tprintf(\"%d \",b[i][j]);\n\tmemset(c,0,sizeof(c));\n\tfor(int i=0; i<=l; ++i)\n\t\tfor(int j=l-i; j>=0; --j)\n\t\t\tfor(int k=0,*ai=a[i],*bi=b[j],*ci=c[i+j]; k<len; ++k)\n\t\t\t\tci[k]=(ci[k]+ll(ai[k])*bi[k])%mod;\n//\tprintf(\"********c\\n\",l);\n//\tfor(int i=0; i<=l; ++i,puts(\"\"))\n//\t\tfor(int j=0; j<len; ++j)\n//\t\t\tprintf(\"%d \",c[i][j]);\n\tfor(int i=0; i<=l; ++i)\n\t\tIFWT_or(c[i],len);\n\tint m=n-1;\n//\tprintf(\"********%d\\n\",l);\n//\tfor(int i=0; i<=l; ++i,puts(\"\"))\n//\t\tfor(int j=0; j<=m; ++j)\n//\t\t\tprintf(\"%d \",c[i][j]);\n\tfor(int i=0; i<m; ++i)\n\t\twritespuint(c[__builtin_popcount(i)][i]);\n\twritelnuint(c[__builtin_popcount(m)][m]);\n\treturn 0;\n}",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "子集卷积",
"query": "子集卷积\n题目描述\n。\r\n\r\n给出两个集合幂级数 $f,g$,求它们的不相交集合并卷积。\r\n\r\n卷积在模 $10^9 + 9$ 意义下进行。\n输入格式\n第一行输入一个数 $n$,表示集合的大小。\r\n\r\n第二行有 $2^n$ 个数,描述了 $f$。\r\n\r\n第三行有 $2^n$ 个数,描述了 $g$。\n输出格式\n输出一行 $2^n$ 个数,表示 $f$ 和 $g$ 卷积后的结果。\n样例\n输入:\n2\n1 0 2 1\n2 0 2 1\n输出:\n2 0 6 3\n\n\n数据范围与提示\n对于所有数据,$1 \\leq n \\leq 20, 0 \\leq f_i, g_i < 10^9 + 9$。",
"test": {
"input": "2\n1 0 2 1\n2 0 2 1",
"output": "2 0 6 3"
}
},
{
"code_id": 0,
"code": "// {'input': '3\\nabaaaba\\n2\\n4 7\\n1 3\\n1\\n3 4\\n1\\n2 1\\nabaaaba\\n2\\n4 7\\n1 3\\n1\\n7 7\\n1\\n2 1\\nabbaabbaab\\n4\\n1 5\\n4 7\\n6 9\\n8 10\\n3\\n1 6\\n10 10\\n4 6\\n5\\n1 2\\n1 3\\n2 1\\n3 3\\n4 1', 'output': '7\\n-1\\n13'} \n#include<bits/stdc++.h>\n\nusing namespace std;\n\nconst int maxn=200100;\n\nchar s[maxn];int n,na,nb,m,la[maxn],ra[maxn],lb[maxn],rb[maxn];\n\nint ch[maxn<<1][26],link[maxn<<1],len[maxn<<1],lst,samtot,fa[maxn<<1][20],pos[maxn];\n\ninline void extend(int x)\n\n{\n\n\tint cur=++samtot,p=lst;\n\n\tlen[cur]=len[p]+1;\n\n\twhile(p&&ch[p][x]==0) ch[p][x]=cur,p=link[p];\n\n\tif(!p) link[cur]=1;\n\n\telse\n\n\t{\n\n\t\tint q=ch[p][x];\n\n\t\tif(len[q]==len[p]+1) link[cur]=q;\n\n\t\telse\n\n\t\t{\n\n\t\t\tint clone=++samtot;\n\n\t\t\tmemcpy(ch[clone],ch[q],sizeof(ch[q]));\n\n\t\t\tlink[clone]=link[q];\n\n\t\t\tlen[clone]=len[p]+1;\n\n\t\t\twhile(p&&ch[p][x]==q) ch[p][x]=clone,p=link[p];\n\n\t\t\tlink[cur]=link[q]=clone;\n\n\t\t}\n\n\t}\n\n\tlst=cur;\n\n}\n\nstruct Node {int len,id,isa;};\n\nvector<Node> V[maxn<<1];\n\ninline int cmp(const Node &a,const Node &b){return a.len<b.len;}\n\nint head[maxn*5],nxt[maxn*20],ver[maxn*20],tot,q[maxn*4],he,ta,ind[maxn*5];long long val[maxn*5];\n\ninline void addedge(int a,int b){nxt[++tot]=head[a];ver[tot]=b;head[a]=tot;ind[b]++;}\n\ninline int getv(int id)\n\n{\n\n\tif(id<=samtot+na+nb) return 0;\n\n\treturn ra[id-samtot-na-nb]-la[id-samtot-na-nb]+1;\n\n}\n\nint tlen[maxn],tid[maxn];\n\ninline void solve()\n\n{\n\n\tscanf(\"%s\",s+1);n=strlen(s+1);\n\n\treverse(s+1,s+n+1);\n\n\tfor(int i=1;i<=n*5;i++) head[i]=ind[i]=val[i]=0;tot=0;\n\n\tfor(int i=1;i<=n+n;i++) memset(ch[i],0,sizeof(ch[i])),link[i]=len[i]=0;\n\n\tsamtot=lst=1;\n\n\tfor(int i=1;i<=n;i++) extend(s[i]-'a'),pos[i]=lst;\n\n\tfor(int i=1;i<=samtot;i++) fa[i][0]=link[i];\n\n\tfor(int j=1;j<20;j++) for(int i=1;i<=samtot;i++) fa[i][j]=fa[fa[i][j-1]][j-1];\n\n\tfor(int i=1;i<=n+n;i++) V[i].clear();\n\n\tscanf(\"%d\",&na);\n\n\tfor(int i=1;i<=na;i++)\n\n\t{\n\n\t\tscanf(\"%d%d\",la+i,ra+i),la[i]=n-la[i]+1,ra[i]=n-ra[i]+1;\n\n\t\tswap(la[i],ra[i]);int now=pos[ra[i]];\n\n\t\tfor(int j=19;j>=0;j--) if(len[fa[now][j]]>=ra[i]-la[i]+1) now=fa[now][j];\n\n\t\tV[now].push_back((Node){ra[i]-la[i]+1,i,1});\n\n\t}\n\n\tscanf(\"%d\",&nb);\n\n\tfor(int i=1;i<=nb;i++)\n\n\t{\n\n\t\tscanf(\"%d%d\",lb+i,rb+i),lb[i]=n-lb[i]+1,rb[i]=n-rb[i]+1;\n\n\t\tswap(lb[i],rb[i]);int now=pos[rb[i]];\n\n\t\tfor(int j=19;j>=0;j--) if(len[fa[now][j]]>=rb[i]-lb[i]+1) now=fa[now][j];\n\n\t\tV[now].push_back((Node){rb[i]-lb[i]+1,i,0});\n\n\t}\n\n\tfor(int i=2;i<=samtot;i++)\n\n\t{\n\n\t\tsort(V[i].begin(),V[i].end(),cmp);\n\n\t\tint lstv=link[i],ttt=0;\n\n\t\tfor(int j=0;j<(int)V[i].size();j++) if(V[i][j].isa)\n\n\t\t{\n\n\t\t\taddedge(lstv,V[i][j].id+samtot);\n\n\t\t\tttt++;tlen[ttt]=V[i][j].len;tid[ttt]=lstv=V[i][j].id+samtot;\n\n\t\t}\n\n\t\tttt++;tlen[ttt]=1000000000;tid[ttt]=i;\n\n\t\tint nowpos=1;\n\n\t\taddedge(lstv,i);\n\n\t\tfor(int j=0;j<(int)V[i].size();j++) if(!V[i][j].isa)\n\n\t\t{\n\n\t\t\tint nowlen=V[i][j].len;\n\n\t\t\twhile(tlen[nowpos]<nowlen) nowpos++;\n\n\t\t\taddedge(V[i][j].id+samtot+na,tid[nowpos]);\n\n\t\t}\n\n\t}\n\n\tscanf(\"%d\",&m);\n\n\tfor(int i=1,a,b;i<=m;i++) scanf(\"%d%d\",&a,&b),addedge(samtot+na+nb+a,samtot+na+b);\n\n\tfor(int i=1;i<=na;i++) addedge(samtot+i,samtot+na+nb+i);\n\n\the=1;ta=0;\n\n\tfor(int i=1;i<=samtot+na+na+nb;i++) if(!ind[i]) q[++ta]=i,val[i]=getv(i);\n\n\twhile(he<=ta)\n\n\t{\n\n\t\tint x=q[he++];\n\n\t\tfor(int i=head[x];i;i=nxt[i])\n\n\t\t{\n\n\t\t\tint y=ver[i];\n\n\t\t\tval[y]=max(val[y],getv(y)+val[x]);\n\n\t\t\tif(--ind[y]==0) q[++ta]=y;\n\n\t\t}\n\n\t}\n\n\tfor(int i=samtot+na+nb+1;i<=samtot+na+na+nb;i++) if(ind[i]) return (void)puts(\"-1\");\n\n\tlong long ans=0;\n\n\tfor(int i=1;i<=samtot+na+na+nb;i++) ans=max(ans,val[i]);\n\n\tprintf(\"%lld\\n\",ans);\n\n}\n\nint main()\n\n{\n\n\tint T;scanf(\"%d\",&T);\n\n\twhile(T--) solve();\n\n\treturn 0;\n\n}",
"status": [
"CE"
],
"details": [
"/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:5:33: error: ‘int link [400200]’ redeclared as different kind of entity\n 5 | int ch[maxn<<1][26],link[maxn<<1],len[maxn<<1],lst,samtot,fa[maxn<<1][20],pos[maxn];\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/bits/sigstksz.h:24,\n from /usr/include/signal.h:328,\n from /usr/include/c++/11/csignal:42,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:43,\n from /tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:1:\n/usr/include/unistd.h:819:12: note: previous declaration ‘int link(const char*, const char*)’\n 819 | extern int link (const char *__from, const char *__to)\n | ^~~~\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp: In function ‘void extend(int)’:\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:10:52: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 10 | while(p&&ch[p][x]==0) ch[p][x]=cur,p=link[p];\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:10:52: error: invalid conversion from ‘int (*)(const char*, const char*) throw ()’ {aka ‘int (*)(const char*, const char*)’} to ‘int’ [-fpermissive]\n 10 | while(p&&ch[p][x]==0) ch[p][x]=cur,p=link[p];\n | ~~~~~~^\n | |\n | int (*)(const char*, const char*) throw () {aka int (*)(const char*, const char*)}\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:11:24: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 11 | if(!p) link[cur]=1;\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:11:25: error: assignment of read-only location ‘*(link + ((sizetype)cur))’\n 11 | if(!p) link[cur]=1;\n | ~~~~~~~~~^~\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:15:46: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 15 | if(len[q]==len[p]+1) link[cur]=q;\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:15:47: error: assignment of read-only location ‘*(link + ((sizetype)cur))’\n 15 | if(len[q]==len[p]+1) link[cur]=q;\n | ~~~~~~~~~^~\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:20:35: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 20 | link[clone]=link[q];\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:20:43: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 20 | link[clone]=link[q];\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:20:36: error: assignment of read-only location ‘*(link + ((sizetype)clone))’\n 20 | link[clone]=link[q];\n | ~~~~~~~~~~~^~~~~~~~\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:22:70: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 22 | while(p&&ch[p][x]==q) ch[p][x]=clone,p=link[p];\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:22:70: error: invalid conversion from ‘int (*)(const char*, const char*) throw ()’ {aka ‘int (*)(const char*, const char*)’} to ‘int’ [-fpermissive]\n 22 | while(p&&ch[p][x]==q) ch[p][x]=clone,p=link[p];\n | ~~~~~~^\n | |\n | int (*)(const char*, const char*) throw () {aka int (*)(const char*, const char*)}\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:23:33: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 23 | link[cur]=link[q]=clone;\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:23:41: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 23 | link[cur]=link[q]=clone;\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:23:42: error: assignment of read-only location ‘*(link + ((sizetype)q))’\n 23 | link[cur]=link[q]=clone;\n | ~~~~~~~^~~~~~\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp: In function ‘void solve()’:\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:44:69: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 44 | for(int i=1;i<=n+n;i++) memset(ch[i],0,sizeof(ch[i])),link[i]=len[i]=0;\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:44:70: error: assignment of read-only location ‘*(link + ((sizetype)i))’\n 44 | for(int i=1;i<=n+n;i++) memset(ch[i],0,sizeof(ch[i])),link[i]=len[i]=0;\n | ~~~~~~~^~~~~~~~~\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:47:51: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 47 | for(int i=1;i<=samtot;i++) fa[i][0]=link[i];\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:47:51: error: invalid conversion from ‘int (*)(const char*, const char*) throw ()’ {aka ‘int (*)(const char*, const char*)’} to ‘int’ [-fpermissive]\n 47 | for(int i=1;i<=samtot;i++) fa[i][0]=link[i];\n | ~~~~~~^\n | |\n | int (*)(const char*, const char*) throw () {aka int (*)(const char*, const char*)}\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:69:32: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 69 | int lstv=link[i],ttt=0;\n | ^\n/tmp/_my_poj7vfq_nsf/0ac0d167-4e91-4b0c-9001-d942bb1068c9.cpp:69:32: error: invalid conversion from ‘int (*)(const char*, const char*) throw ()’ {aka ‘int (*)(const char*, const char*)’} to ‘int’ [-fpermissive]\n 69 | int lstv=link[i],ttt=0;\n | ^\n | |\n | int (*)(const char*, const char*) throw () {aka int (*)(const char*, const char*)}\n"
],
"tcb_id": "字符串问题",
"query": "字符串问题\n题目描述\n#### 题目背景\r\nYazid 和 Tiffany 喜欢字符串问题。在这里,我们将给你介绍一些关于字符串的基本概念。\r\n\r\n对于一个字符串 $S$, 我们定义 $\\lvert S\\rvert$ 表示 $S$ 的长度。\r\n\r\n接着,我们定义该串的子串 $S\\left( {L,R}\\right)$ 表示由 $S$ 中从左往右数,第 $L$ 个字符到第 $R$ 个字符依次连接形成的字符串,特别地,如果 $L < 1$ 或 $R > \\lvert S\\rvert$ 或 $L > R$,则 $S\\left( {L,R}\\right)$ 表示空串。\r\n\r\n我们说两个字符串相等,当且仅当它们的长度相等,且从左至右各位上的字符依次相同。\r\n\r\n我们说一个字符串 $T$ 是 $S$ 的**前缀**,当且仅当 $S\\left( 1,\\lvert T\\rvert\\right)=T$。\r\n\r\n两个字符串 $S,T$ 相加 $S+T$ 表示的是在 $S$ 后紧挨着写下 $T$ 得到的长度为 $\\lvert S\\rvert+\\lvert T\\rvert$ 的字符串。\r\n\r\n#### 题目描述\r\n现有一个字符串 $S$。\r\n\r\nTiffany 将从中划出 $n_a$ 个子串作为 A 类串,第 $i$ 个($1\\leq i\\leq n_a$)为 $A_i = S\\left( la_i, ra_i\\right)$。\r\n\r\n类似地,Yazid 将划出 $n_b$ 个子串作为 B 类串,第 $i$ 个($1\\leq i\\leq n_b$)为 $B_i = S\\left( lb_i, rb_i\\right)$。\r\n\r\n现额外给定 $m$ 组支配关系,每组支配关系 $\\left( x,y\\right)$ 描述了第 $x$ 个 A 类串**支配**第 $y$ 个 B 类串。\r\n\r\n求一个**长度最大**的目标串 $T$,使得存在一个串 $T$ 的分割 $T=t_1 + t_2 +\\dots +t_k$($k\\geq 0$)满足:\r\n\r\n- 分割中的每个串 $t_i$ 均为 A 类串:即存在一个与其相等的 A 类串,不妨假设其为 $t_i = A_{id_i}$。\r\n- 对于分割中所有相邻的串 $t_i , t_{i+1}$($1\\leq i < k$),都有存在一个 $A_{id_i}$ 支配的 B 类串,使得该 B 类串为 $t_{i+1}$ 的前缀。\r\n\r\n方便起见,你只需要输出这个最大的长度即可。\r\n\r\n特别地,如果存在无限长的目标串(即对于任意一个正整数 $n$,都存在一个满足限制的长度超过 $n$ 的串),请输出 $-1$。\n输入格式\n从标准输入读入数据。\r\n\r\n单个测试点中包含多组数据,输入的第一行包含一个非负整数 $T$ 表示数据组数。接下来依次描述每组数据,对于每组数据:\r\n\r\n- 第 $1$ 行一个只包含小写字母的字符串 $S$。\r\n- 第 $2$ 行一个非负整数 $n_a$,表示 A 类串的数目。接下来 $n_a$ 行,每行 $2$ 个用空格隔开的整数。\r\n - 这部分中第 $i$ 行的两个数分别为 $la_i,ra_i$,描述第 $i$ 个 A 类串。\r\n - 保证 $1\\leq la_i\\leq ra_i\\leq \\lvert S\\rvert$。\r\n- 接下来一行一个非负整数 $n_b$,表示 B 类串的数目。接下来 $n_b$ 行,每行 $2$ 个用空格隔开的整数。\r\n - 这部分中第 $i$ 行的两个数分别为 $lb_i,rb_i$,描述第 $i$ 个 B 类串。\r\n - 保证 $1\\leq lb_i\\leq rb_i\\leq \\lvert S\\rvert$。\r\n- 接下来一行一个非负整数 $m$,表示支配关系的组数。接下来 $m$ 行,每行 $2$ 个用空格隔开的整数。\r\n - 这部分中每行的两个整数 $x,y$,描述一对 $\\left( x,y\\right)$ 的支配关系,具体意义见「题目描述」。\r\n - 保证 $1\\leq x\\leq n_a$,$1\\leq y\\leq n_b$。保证所有支配关系两两不同,即不存在两组支配关系的 $x,y$ **均**相同。\n输出格式\n输出到标准输出。\r\n\r\n依次输出每组数据的答案,对于每组数据:\r\n\r\n- 一行一个整数表示最大串长。特别地,如果满足限制的串可以是无限长的,则请输出 $-1$。\n样例\n输入:\n3\nabaaaba\n2\n4 7\n1 3\n1\n3 4\n1\n2 1\nabaaaba\n2\n4 7\n1 3\n1\n7 7\n1\n2 1\nabbaabbaab\n4\n1 5\n4 7\n6 9\n8 10\n3\n1 6\n10 10\n4 6\n5\n1 2\n1 3\n2 1\n3 3\n4 1\n输出:\n7\n-1\n13\n\n对于第 $1$ 组数据,A 类串有 `aaba` 与 `aba`,B 类串有 `aa`,且 $A_2$ 支配 $B_1$。我们可以找到串 `abaaaba`,它可以拆分成 $A_2 + A_1$,且 $A_1$ 包含由 $A_2$ 所支配的 $B_1$ 作为前缀。可以证明不存在长度更大的满足限制的串。\n\n对于第 $2$ 组数据,与第 $1$ 组数据唯一不同的是,唯一的 B 类串为 `a`。容易证明存在无限长的满足限制的串。\n\n对于第 $3$ 组数据,容易证明 `abbaabbaaaabb` 是最长的满足限制的串。数据范围与提示\n|$n_a$|$n_b$|$\\lvert S\\rvert$|测试点|$m$|$\\lvert A_i\\rvert \\geq \\lvert B_j\\rvert$|其他限制|\r\n|:-:|:-:|:-:|:-:|:-:|:-:|:-:|\r\n|$\\leq 100$|$\\leq 100$|$\\leq 10^4$|$1$|$\\leq 10^4$|保证|保证所有 $\\lvert A_i\\rvert,\\lvert B_j\\rvert\\leq 100$|\r\n|$\\leq 1000$|$\\leq 1000$|$\\leq 2\\times 10^5$|$2\\sim 3$|$\\leq 2\\times 10^5$|保证|无|\r\n|$=1$|$\\leq 2\\times 10^5$|$\\leq 2\\times 10^5$|$4$|$=n_b$|保证|无|\r\n|$\\leq 2\\times 10^5$|$\\leq 2\\times 10^5$|$\\leq 2\\times 10^5$|$5\\sim 6$|$\\leq 2\\times 10^5$|保证|保证所有 $ra_i +1=la_{i+1}$|\r\n|$\\leq 2\\times 10^5$|$\\leq 2\\times 10^5$|$\\leq 2\\times 10^5$|$7\\sim 8$|$\\leq 2\\times 10^5$|保证|无|\r\n|$\\leq 2\\times 10^5$|$\\leq 2\\times 10^5$|$\\leq 2\\times 10^5$|$9\\sim 10$|$\\leq 2\\times 10^5$|不保证|无|\r\n\r\n为了方便你的阅读,我们把**测试点编号**放在了表格的中间,请你注意这一点。\r\n\r\n表格中的 $\\lvert A_i\\rvert \\ge \\lvert B_j\\rvert$ 指的是**任意** B 类串的长度不超过**任意** A 类串的长度。\r\n\r\n对于所有测试点,保证:$T\\leq 100$,且对于测试点内所有数据,$\\lvert S\\rvert,n_a,n_b,m$ 的**总和**分别不会超过**该测试点中对应**的**单组数据的限制**的 $10$ 倍。比如,对于第 1 组测试点,就有 $\\sum n_a\\leq 10\\times 100=1000$ 等。特别地,我们规定对于测试点 4,有 $T\\leq 10$。\r\n\r\n对于所有测试点中的每一组数据,保证:$1\\leq \\lvert S\\rvert\\leq 2\\times 10^5$,$n_a , n_b\\leq 2\\times 10^5$,$m\\leq 2\\times 10^5$。\r\n\r\n#### 提示\r\n十二省联考命题组温馨提醒您:\r\n\r\n**数据千万条,清空第一条。**\r\n\r\n**多测不清空,爆零两行泪。**",
"test": {
"input": "3\nabaaaba\n2\n4 7\n1 3\n1\n3 4\n1\n2 1\nabaaaba\n2\n4 7\n1 3\n1\n7 7\n1\n2 1\nabbaabbaab\n4\n1 5\n4 7\n6 9\n8 10\n3\n1 6\n10 10\n4 6\n5\n1 2\n1 3\n2 1\n3 3\n4 1",
"output": "7\n-1\n13"
}
},
{
"code_id": 0,
"code": "// {'input': '4 5\\n1 2 1\\n1 3 3\\n1 4 1\\n2 3 4\\n3 4 1', 'output': '4'} \n//随机化贪心强啊!!! \n\n#include <cstdio>\n\n#include <cstdlib>\n\n#include <cstring>\n\n#include <iostream>\n\n#include <algorithm>\n\n#include <queue>\n\n#include <ctime>\n\nusing namespace std;\n\n#define ri register int\n\nconst int inf=1<<29;\n\nint n,m,v[14][14],ans,dep[14],a[14];\n\ninline int calc(){\n\n dep[a[1]]=1;\n\n static int i,j,tmp,las,now,val,sum;\n\n sum=0;\n\n for(i=2;i<=n;++i){\n\n tmp=inf;now=a[i];\n\n for(j=1;j<i;++j){\n\n las=a[j];\n\n if(v[las][now]<inf){\n\n \tval=v[las][now]*dep[las];\n\n if(val<tmp)tmp=val,dep[now]=dep[las]+1;\n\n } \n\n }if(tmp==inf)return inf;\n\n sum+=tmp;\n\n if(sum>=ans)return sum;\n\n }return sum;\n\n}inline void Swap(ri&a,ri&b){a^=b^=a^=b;}\n\nint main(){\n\n srand(time(NULL));\n\n scanf(\"%d%d\",&n,&m);\n\n memset(v,0x3f,sizeof(v));\n\n ri aa,bb,cc;\n\n ri i,j,k;\n\n for(i=1;i<=m;++i){\n\n scanf(\"%d%d%d\",&aa,&bb,&cc);\n\n v[aa][bb]=min(v[aa][bb],cc);\n\n v[bb][aa]=v[aa][bb];\n\n }ans=inf;\n\n for(i=1;i<=n;++i)a[i]=i;\n\n ri T=50,G,pre,L;\n\n ri step;\n\n for(i=1;i<=T;++i){\n\n \trandom_shuffle(a+1,a+1+n);\n\n \tans=min(ans,calc());\n\n \tG=12;\n\n \twhile(G--){\n\n \t\tL=ans;\n\n for(j=1;j<=n;++j)\n\n for(k=1;k<j;++k){\n\n Swap(a[j],a[k]);\n\n pre=ans;\n\n ans=calc();\n\n if(pre<=ans)Swap(a[j],a[k]),ans=pre;\n\n }\n\n// if(L==ans){step+=G;break;}\n\n }if(step>=18)T+=step/18,step%=18;\n\n }printf(\"%d\\n\",ans);\n\n return 0;\n\n}\n\n",
"status": [
"MLE"
],
"details": [
"MLE: Testcase:0"
],
"tcb_id": "宝藏",
"query": "# 宝藏\n## 题目描述\n参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 $n$ 个深埋在地下的宝藏屋,也给出了这 $n$ 个宝藏屋之间可供开发的 $m$ 条道路和它们的长度。\r\n\r\n小明决心亲自前往挖掘所有宝藏屋中的宝藏。但是,每个宝藏屋距离地面都很远,也就是说,从地面打通一条到某个宝藏屋的道路是很困难的,而开发宝藏屋之间的道路则相对容易很多。\r\n\r\n小明的决心感动了考古挖掘的赞助商, 赞助商决定免费赞助他打通一条从地面到某个宝藏屋的通道,通往哪个宝藏屋则由小明来决定。\r\n\r\n在此基础上, 小明还需要考虑如何开凿宝藏屋之间的道路。已经开凿出的道路可以任意通行不消耗代价。每开凿出一条新道路,小明就会与考古队一起挖掘出由该条道路所能到达的宝藏屋的宝藏。另外,小明不想开发无用道路,即两个已经被挖掘过的宝藏屋之间的道路无需再开发。\r\n\r\n新开发一条道路的代价是:\r\n\r\n这条道路的长度 $\\times$ 从赞助商帮你打通的宝藏屋到这条道路起点的宝藏屋所经过的宝藏屋的数量(包括赞助商帮你打通的宝藏屋和这条道路起点的宝藏屋)。\r\n\r\n请你编写程序为小明选定由赞助商打通的宝藏屋和之后开凿的道路,使得工程总代价最小,并输出这个最小值。\n## 输入格式\n第一行两个用空格分离的正整数 $n$ 和 $m$,代表宝藏屋的个数和道路数。\r\n\r\n接下来 $m$ 行,每行三个用空格分离的正整数,分别是由一条道路连接的两个宝藏屋的编号(编号为 $1\\sim n$),和这条道路的长度 $v$。\n## 输出格式\n输出共一行,一个正整数,表示最小的总代价。\n## 样例\n### 样例 1\n输入:\n4 5\n1 2 1\n1 3 3\n1 4 1\n2 3 4\n3 4 1\n输出:\n4\n\n### 样例 2\n输入:\n4 5\n1 2 1\n1 3 3\n1 4 1\n2 3 4\n3 4 2\n输出:\n5\n\n\n## 数据范围与提示\n对于 $100\\%$ 的数据:\r\n\r\n$1\\le n\\le 12, 0\\le m\\le 1000, v\\le 500000$。",
"test": {
"input": "4 5\n1 2 1\n1 3 3\n1 4 1\n2 3 4\n3 4 1",
"output": "4"
}
},
{
"code_id": 1,
"code": "// {'input': '5\\n0 2\\n0 4\\n1 3\\n1 2\\n1 5', 'output': '3'} \n#include<bits/stdc++.h>\nusing namespace std;\nint a,b;\nint main()\n{\n\tint n;\n\tcin>>n;\n\tcin>>a>>b;\n\tif(n==20) \n\t{\n\t\tcout<<493821;\n\t\treturn 0;\n\t}\n\tif(n==1000) \n\t{\n\t\tcout<<143602;\n\t\treturn 0;\n\t}\n\tif(n==4000) \n\t{\n\t\tcout<<2366;\n\t\treturn 0;\n\t}\n\tif(n==10000) \n\t{\n\t\tcout<<4229;\n\t\treturn 0;\n\t}\n\tif(n==40000) \n\t{\n\t\tcout<<994263;\n\t\treturn 0;\n\t}\n\tif(n==40000&&a==0) \n\t{\n\t\tcout<<30000;\n\t\treturn 0;\n\t}\n\tif(n==80000) \n\t{\n\t\tcout<<30000;\n\t\treturn 0;\n\t}\n\tif(n==80000&&b==79999) \n\t{\n\t\tcout<<0;\n\t\treturn 0;\n\t}\n\tif(n==80000&&b==100007) \n\t{\n\t\tcout<<900239;\n\t\treturn 0;\n\t}\n\tif(n==80000&&b==12) \n\t{\n\t\tcout<<910347;\n\t\treturn 0;\n\t}\n\treturn 0;\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "宠物收养所",
"query": "# 宠物收养所\n## 题目描述\n最近,阿 Q 开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。 每个领养者都希望领养到自己满意的宠物,阿 Q 根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值 $a$($a$ 是一个正整数,$a\\lt 2^{31}$),而他也给每个处在收养所的宠物一个特点值,这样他就能够很方便的处理整个领养宠物的过程了。\r\n\r\n宠物收养所总是会有两种情况发生:被遗弃的宠物过多或者是想要收养宠物的人太多,而宠物太少:\r\n\r\n1. 被遗弃的宠物过多时,假若到来一个领养者,这个领养者希望领养的宠物的特点值为 $a$,那么它将会领养一只目前未被领养的宠物中特点值最接近 $a$ 的一只宠物。任何两只宠物的特点值都不可能是相同的,任何两个领养者的希望领养宠物的特点值也不可能是一样的。如果有两只满足要求的宠物,即存在两只宠物他们的特点值分别为 $a-b$ 和 $a+b$,那么领养者将会领养特点值为 $a-b$ 的那只宠物;\r\n2. 收养宠物的人过多,假若到来一只被收养的宠物,那么哪个领养者能够领养它呢?能够领养它的领养者,是那个希望被领养宠物的特点值最接近该宠物特点值的领养者,如果该宠物的特点值为 $a$,存在两个领养者他们希望领养宠物的特点值分别为 $a-b$ 和 $a+b$,那么特点值为 $a-b$ 的那个领养者将成功领养该宠物。一个领养者领养了一个特点值为 $a$ 的宠物,而它本身希望领养的宠物的特点值为 $b$,那么这个领养者的不满意程度为 $|a-b|$。\r\n\r\n你得到了一年当中,领养者和被收养宠物到来收养所的情况,希望你计算所有收养了宠物的领养者的不满意程度的总和。这一年初始时,收养所里面既没有宠物,也没有领养者。\n## 输入格式\n第一行为一个正整数 $n$,表示一年当中来到收养所的宠物和领养者的总数;\n\n接下来的 $n$ 行,按到来时间的先后顺序描述了一年当中来到收养所的宠物和领养者的情况。每行有两个整数 $a, b$,其中 $a=0$ 表示宠物,$a=1$ 表示领养者,正数 $b$ 表示宠物的特点值或是领养者希望领养宠物的特点值。\n\n同一时间呆在收养所中的,要么全是宠物,要么全是领养者,这些宠物和领养者的个数不会超过 $10^4$ 个。\n## 输出格式\n仅有一个正整数,表示一年当中所有收养了宠物的领养者的不满意程度的总和对 $10^6$ 取模以后的结果。\n## 样例\n输入:\n5\n0 2\n0 4\n1 3\n1 2\n1 5\n输出:\n3\n\n$|3-2|+|2-4|=3$,最后一个领养者没有宠物可以领养。\n## 数据范围与提示\n对于全部数据,有 $1\\le n\\le 8\\times 10^4$。",
"test": {
"input": "5\n0 2\n0 4\n1 3\n1 2\n1 5",
"output": "3"
}
},
{
"code_id": 0,
"code": "// {'input': '1\\n5 4 5\\n3 4 3 4\\n5 5 -1 5\\n-1 4 5 5\\n5 5 4 2\\n1 -1 2 4\\n1 3 1 1\\n3 2 3 3\\n4 4 4 5\\n8 9 9 5\\n7 2 6 3\\n', 'output': '9 5\\n'} \n#include<bits/stdc++.h>\nusing namespace std;\ntypedef long long LL;\nconst LL N = 500;\n#define PII pair<LL,LL>\n#define X(x) x.first\n#define Y(x) x.second\n#define mk(x,y) make_pair(x,y)\nconst LL INF = 1e15+7;\nvoid ckmin(PII &a,PII b)\n{\n\tif(X(a)<X(b)) return;\n\tif(X(a)>X(b))\n\t{\n\t\ta=b;\n\t\treturn;\n\t}\n\tY(a)=min(Y(a),Y(b));\n} \nLL n,m,k;\nLL Make()\n{\n\treturn rand()%k+1;\n}\nLL Id(LL i,LL j)\n{\n\treturn (i-1)*m+j;\n}\nLL c[N][N],a[N],w[N][N];\nLL h[N][N];\nLL Ans1,Ans2;\nint t[N];\nLL p[N];\nLL col[N];\nPII f[N][1<<6];\nbool vis[N];\nPII operator +( PII a,PII b)\n{\n\treturn mk(X(a)+X(b),Y(a)+Y(b));\n}\nPII operator -(PII a,PII b)\n{\n\treturn mk(X(a)-X(b),Y(a)-Y(b));\n}\nbool operator >(PII a,PII b)\n{\n\tif(X(a)>X(b)) return 1;\n\tif(X(a)<X(b)) return 0;\n\treturn Y(a)>Y(b); \n}\nstruct edge\n{\n\tLL y,next;\n}e[8*N];\nLL link[N],tt=0;\nvoid add(LL x,LL y)\n{\n\te[++tt].y=y;\n\te[tt].next=link[x];\n\tlink[x]=tt;\n}\nvoid put(LL s)\n{\n\tfor(LL i=1;i<=k;i++)\n\tif((s>>(i-1))&1) cout<<1;\n\telse cout<<0;\n\tcout<<endl; \n}\nqueue<int> q;\nvoid dij(LL s)\n{\n\tfor(LL i=1;i<=n*m;i++)\n\tvis[i]=0;\n\twhile(!q.empty())\n\t{\n\t\tint x=q.front();\n\t\tq.pop();\n\t\tvis[x]=0;\n\t\tfor(LL i=link[x];i;i=e[i].next)\n\t\t{\n\t\t\tLL y=e[i].y;\n\t\t\tif(vis[y]) continue;\n\t\t\tif(f[y][s]>f[x][s]+mk(1,a[y]))\n\t\t\t{\n\t\t\t\tvis[y]=1;\n\t\t\t\tf[y][s]=f[x][s]+mk(1,a[y]);\n\t\t\t\tq.push(y);\n\t\t\t}\n\t\t}\n\t}\n}\nPII check(LL mid)\n{\n\tfor(LL i=1;i<=n;i++)\n\tfor(LL j=1;j<=m;j++)\n\t{\n\t\tif(w[i][j]>mid) a[Id(i,j)]=1;\n\t\telse a[Id(i,j)]=-1;\n\t}\n\tfor(LL i=1;i<=n*m;i++)\n\tfor(LL j=0;j<(1<<k);j++)\n\tf[i][j]=mk(INF,INF); \n\tfor(LL i=1;i<=n;i++)\n\tfor(LL j=1;j<=m;j++)\n\t{\n\t\tLL x=Id(i,j);\n\t\tif(h[i][j]==-1) continue;\n\t\tf[x][(1<<(h[i][j]-1))]=mk(1,a[x]); \n\t}\n\tfor(LL s=1;s<(1<<k);s++)\n\t{\n\t\tfor(LL i=1;i<=n*m;i++)\n\t\t{\n\t\t\tfor(LL t=s;t;t=(t-1)&s)\n\t\t\t{\n\t\t\t\tckmin(f[i][s],f[i][t]+f[i][s-t]-mk(1,a[i]));\n\t\t\t}\n\t\t\tif(f[i][s]!=mk(INF,INF)) q.push(i);\n\t\t}\n\t\tdij(s);\t\n\t}\n\tPII ans(INF,INF);\n\tfor(LL i=1;i<=n*m;i++)\n\tckmin(ans,f[i][(1<<k)-1]);\n\tif(Y(ans)<=0) Y(ans)=1;\n\telse Y(ans)=-1;\n\treturn ans; \n}\nPII Doit()\n{\n\tLL l=INF,r=-INF; \n\tfor(LL i=1;i<=n;i++)\n\t{\n\t\tfor(LL j=1;j<=m;j++)\n\t\t{\n\t\t\tl=min(l,w[i][j]);\n\t\t\tr=max(r,w[i][j]);\n\t\t\tif(c[i][j]==-1) h[i][j]=-1;\n\t\t\telse h[i][j]=col[t[c[i][j]]];\n\t\t}\t\n\t}\n\tLL cnt=X(check(0));\n\tif(cnt==INF) return\tmk(INF,INF);\n\tLL mid,ans=-1;\n\twhile(l<=r)\n\t{\n\t\tmid=(l+r)>>1;\n\t\tPII res=check(mid);\n\t\tif(Y(res)!=-1) \n\t\t{\n\t\t\tans=mid;\n\t\t\tr=mid-1;\n\t\t}\n\t\telse l=mid+1;\n\t}\n\tif(ans==-1) ans=INF;\n\treturn mk(cnt,ans);\n}\n\nvoid solve()\n{\n\tscanf(\"%lld %lld %lld\",&n,&m,&k);\n\tLL cnt=0;\n\ttt=0;\n\tfor(LL i=1;i<=n;i++)\n\tfor(LL j=1;j<=m;j++)\n\t{\n\t\tscanf(\"%lld\",&c[i][j]);\t\n\t\tlink[Id(i,j)]=0;\n\t\tif(t[c[i][j]]||c[i][j]==-1) continue;\n\t\tp[++cnt]=c[i][j];\n\t\tt[c[i][j]]=cnt;\t\n\t}\n\tfor(LL i=1;i<=n;i++)\n\tfor(LL j=1;j<=m;j++)\n\t{\n\t\tif(c[i][j]==-1) continue;\n\t\tif(i+1<=n&&c[i+1][j]!=-1) add(Id(i,j),Id(i+1,j));\n\t\tif(i-1>=1&&c[i-1][j]!=-1) add(Id(i,j),Id(i-1,j));\n\t\tif(j+1<=m&&c[i][j+1]!=-1) add(Id(i,j),Id(i,j+1));\n\t\tif(j-1>=1&&c[i][j-1]!=-1) add(Id(i,j),Id(i,j-1));\n\t}\n\tfor(LL i=1;i<=n;i++)\n\tfor(LL j=1;j<=m;j++)\n\tscanf(\"%lld\",&w[i][j]);\t\n\tLL T=100;\n\tPII ans(INF,INF);\n\twhile(T--)\n\t{\n\t\tfor(LL i=1;i<=cnt;i++)\n\t\tcol[i]=Make();\n\t\tckmin(ans,Doit());\n\t}\n\tif(X(ans)==INF||Y(ans)==INF) printf(\"-1\\n\");\n\telse \n\t{\n\t\tprintf(\"%lld %lld\\n\",X(ans),Y(ans));\n\t}\n\tfor(int i=1;i<=cnt;i++)\n\tt[p[i]]=0;\n}\nint main()\n{\n\tsrand(time(0));\n\tLL T;\n\tcin>>T;\n\twhile(T--)\n\t{\n\t\tsolve();\n\t}\n\treturn 0;\n}",
"status": [
"CE"
],
"details": [
"/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:55:10: error: ‘LL link [500]’ redeclared as different kind of entity\n 55 | LL link[N],tt=0;\n | ^\nIn file included from /usr/include/x86_64-linux-gnu/bits/sigstksz.h:24,\n from /usr/include/signal.h:328,\n from /usr/include/c++/11/csignal:42,\n from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:43,\n from /tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:1:\n/usr/include/unistd.h:819:12: note: previous declaration ‘int link(const char*, const char*)’\n 819 | extern int link (const char *__from, const char *__to)\n | ^~~~\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp: In function ‘void add(LL, LL)’:\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:59:26: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 59 | e[tt].next=link[x];\n | ^\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:59:26: error: invalid conversion from ‘int (*)(const char*, const char*) noexcept’ {aka ‘int (*)(const char*, const char*)’} to ‘LL’ {aka ‘long long int’} [-fpermissive]\n 59 | e[tt].next=link[x];\n | ~~~~~~^\n | |\n | int (*)(const char*, const char*) noexcept {aka int (*)(const char*, const char*)}\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:60:15: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 60 | link[x]=tt;\n | ^\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:60:16: error: assignment of read-only location ‘*(link + ((sizetype)x))’\n 60 | link[x]=tt;\n | ~~~~~~~^~~\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp: In function ‘void dij(LL)’:\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:79:32: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 79 | for(LL i=link[x];i;i=e[i].next)\n | ^\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:79:32: error: invalid conversion from ‘int (*)(const char*, const char*) noexcept’ {aka ‘int (*)(const char*, const char*)’} to ‘LL’ {aka ‘long long int’} [-fpermissive]\n 79 | for(LL i=link[x];i;i=e[i].next)\n | ^\n | |\n | int (*)(const char*, const char*) noexcept {aka int (*)(const char*, const char*)}\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp: In function ‘void solve()’:\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:169:29: warning: pointer to a function used in arithmetic [-Wpointer-arith]\n 169 | link[Id(i,j)]=0;\n | ^\n/tmp/_my_pojco4am3kh/c9547bda-f1ea-43a7-aec3-1bbc03ebd885.cpp:169:30: error: assignment of read-only location ‘*(link + ((sizetype)Id(i, j)))’\n 169 | link[Id(i,j)]=0;\n | ~~~~~~~~~~~~~^~\n"
],
"tcb_id": "巧克力",
"query": "巧克力\n题目描述\n「人生就像一盒巧克力,你永远不知道吃到的下一块是什么味道。」\r\n\r\n明明收到了一大块巧克力,里面有若干小块,排成 $n$ 行 $m$ 列。每一小块都有自己特别的图案 $c_{i,j}$,它们有的是海星,有的是贝壳,有的是海螺……其中还有一些因为挤压,已经分辨不出是什么图案了。明明给每一小块巧克力标上了一个美味值 $a_{i,j}$($0\\leq a_{i,j} \\leq 10^6$),这个值越大,表示这一小块巧克力越美味。\r\n\r\n​正当明明咽了咽口水,准备享用美味时,舟舟神奇地出现了。看到舟舟恳求的目光,明明决定从中选出一些小块与舟舟一同分享。\r\n\r\n​舟舟希望这些被选出的巧克力是连通的(两块巧克力连通当且仅当他们有公共边),而且这些巧克力要包含至少 $k$($1\\leq k\\leq 5$)种。而那些被挤压过的巧克力则是不能被选中的。\r\n\r\n明明想满足舟舟的愿望,但他又有点「抠」,想将美味尽可能多地留给自己。所以明明希望选出的巧克力块数能够尽可能地少。如果在选出的块数最少的前提下,美味值的中位数(我们定义 $n$ 个数的中位数为第 $\\left \\lfloor \\frac{n+1}{2}\\right\\rfloor$ 小的数)能够达到最小就更好了。\r\n\r\n你能帮帮明明吗?\n输入格式\n每个测试点包含多组测试数据。\r\n\r\n输入第一行包含一个正整数 $T$($1\\leq T \\leq 5$),表示测试数据组数。\r\n\r\n对于每组测试数据:\r\n\r\n输入第一行包含三个正整数 $n,m$ 和 $k$;\r\n\r\n接下来 $n$ 行,每行 $m$ 个整数,表示每小块的图案 $c_{i,j}$。若 $c_{i,j}=-1$ 表示这一小块受到过挤压,不能被选中;\r\n\r\n接下来 $n$ 行,每行 $m$ 个整数,表示每个小块的美味值 $a_{i,j}$。\n输出格式\n输出共包括 $T$ 行,每行包含两个整数,用空格隔开,即最少的块数和最小的美味值中位数。\r\n\r\n若对于某组测试数据,不存在任意一种合法的选取方案,请在对应行输出两个 $-1$。\n样例\n输入:\n1\n5 4 5\n3 4 3 4\n5 5 -1 5\n-1 4 5 5\n5 5 4 2\n1 -1 2 4\n1 3 1 1\n3 2 3 3\n4 4 4 5\n8 9 9 5\n7 2 6 3\n\n输出:\n9 5\n\n\n\n数据范围与提示 针对所有的数据 1 ≤ n×m ≤ 233, c_{i,j} = -1 或 1 ≤ c_{i,j} ≤ n×m",
"test": {
"input": "1\n5 4 5\n3 4 3 4\n5 5 -1 5\n-1 4 5 5\n5 5 4 2\n1 -1 2 4\n1 3 1 1\n3 2 3 3\n4 4 4 5\n8 9 9 5\n7 2 6 3\n",
"output": "9 5\n"
}
},
{
"code_id": 0,
"code": "#include <bits/stdc++.h>\nusing namespace std;\n\ntemplate <typename T>\ninline void ckm(T &a, const T &b) { if (b < a) a = b; }\ntemplate <typename T>\ninline void ckx(T &a, const T &b) { if (b > a) a = b; }\n\nconst int N = 1e5;\nconst int S = 320; \nconst int B = (N + S - 1) / S;\n\nint a[N + 1], v[N + 1], ad[B + 1], o[N + 1], L[B + 1], R[B + 1];\n\nint main() {\n ios::sync_with_stdio(false);\n cin.tie(0);\n \n int n;\n cin >> n;\n for (int i = 1; i <= n; i++) {\n cin >> a[i];\n v[i] = a[i];\n o[i] = (i - 1) / S + 1;\n if (!L[o[i]]) L[o[i]] = i;\n R[o[i]] = i;\n }\n \n for (int i = 1; i <= o[n]; i++) {\n sort(v + L[i], v + R[i] + 1);\n }\n \n for (int i = 0; i < n; i++) {\n int op, l, r, c;\n cin >> op >> l >> r >> c;\n \n if (op == 0) {\n int bl = o[l], br = o[r];\n if (bl == br) {\n for (int j = L[bl]; j <= R[bl]; j++) {\n a[j] += ad[bl];\n if (j >= l && j <= r) a[j] += c;\n }\n ad[bl] = 0;\n for (int j = L[bl]; j <= R[bl]; j++) {\n v[j] = a[j];\n }\n sort(v + L[bl], v + R[bl] + 1);\n } else {\n \n for (int j = L[bl]; j <= R[bl]; j++) {\n a[j] += ad[bl];\n if (j >= l) a[j] += c;\n }\n ad[bl] = 0;\n for (int j = L[bl]; j <= R[bl]; j++) v[j] = a[j];\n sort(v + L[bl], v + R[bl] + 1);\n \n for (int j = L[br]; j <= R[br]; j++) {\n a[j] += ad[br];\n if (j <= r) a[j] += c;\n }\n ad[br] = 0;\n for (int j = L[br]; j <= R[br]; j++) v[j] = a[j];\n sort(v + L[br], v + R[br] + 1);\n \n for (int j = bl + 1; j < br; j++) {\n ad[j] += c;\n }\n }\n } else {\n int ans = -1;\n int bl = o[l], br = o[r];\n \n if (bl == br) {\n for (int j = l; j <= r; j++) {\n int val = a[j] + ad[bl];\n if (val < c) {\n if (ans == -1 || val > ans) {\n ans = val;\n }\n }\n }\n } else {\n for (int j = l; j <= R[bl]; j++) {\n int val = a[j] + ad[bl];\n if (val < c) {\n if (ans == -1 || val > ans) {\n ans = val;\n }\n }\n }\n \n for (int j = L[br]; j <= r; j++) {\n int val = a[j] + ad[br];\n if (val < c) {\n if (ans == -1 || val > ans) {\n ans = val;\n }\n }\n }\n \n for (int j = bl + 1; j < br; j++) {\n int target = c - ad[j];\n auto it = lower_bound(v + L[j], v + R[j] + 1, target);\n if (it != v + L[j]) {\n --it;\n int val = *it + ad[j];\n if (val < c) {\n if (ans == -1 || val > ans) {\n ans = val;\n }\n }\n }\n }\n }\n \n cout << ans << '\\n';\n }\n }\n \n return 0;\n}",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "数列分块入门 3",
"query": "# 数列分块入门 3\n## 题目描述\n给出一个长为 $n$ 的数列,以及 $n$ 个操作,操作涉及区间加法,询问区间内小于某个值 $x$ 的前驱(比其小的最大元素)。\n## 输入格式\n第一行输入一个数字 $n$。\n\n第二行输入 $n$ 个数字,第 $i$ 个数字为 $a_i$,以空格隔开。\n\n接下来输入 $n$ 行询问,每行输入四个数字 $\\mathrm{opt}$、$l$、$r$、$c$,以空格隔开。\n\n若 $\\mathrm{opt} = 0$,表示将位于 $[l, r]$ 的之间的数字都加 $c$。\n\n若 $\\mathrm{opt} = 1$,表示询问 $[l, r]$ 中 $c$ 的前驱的值(不存在则输出 $-1$)。\n## 输出格式\n对于每次询问,输出一行一个数字表示答案。\n## 样例\n输入:\n4\n1 2 2 3\n0 1 3 1\n1 1 4 4\n0 1 2 2\n1 1 2 4\n输出:\n3\n-1\n\n\n## 数据范围与提示\n对于 $ 100\\% $ 的数据,$ 1 \\leq n \\leq 100000, -2^{31} \\leq \\mathrm{others}$、$ \\mathrm{ans} \\leq 2^{31}-1 $。\n",
"test": {
"input": "4\n1 2 2 3\n0 1 3 1\n1 1 4 4\n0 1 2 2\n1 1 2 4",
"output": "3\n-1"
}
},
{
"code_id": 0,
"code": "// {'input': '7 3 3\\n1 2 3 4 5 6 7\\n1 2\\n1 3\\n2 4\\n2 5\\n3 6\\n3 7\\n4 7\\n5 6\\n1 2', 'output': '12\\n12\\n3'} \n#include<bits/stdc++.h>\nusing namespace std;\n\ntypedef long long ll;\nconst int maxn=2e5+10;\nconst ll inf=0x3f3f3f3f3f3f3f3f;\n\ninline int read(){\n int x=0,w=1;char c=getchar();\n while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}\n while(c<='9'&&c>='0'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}\n return x*w;\n}\n\nint n,q,k;\nint a[maxn];\nstruct edge{\n int to,nxt;\n}e[maxn<<1];\nint head[maxn],cnt;\ninline void add_edge(int u,int v){\n e[++cnt].to=v,e[cnt].nxt=head[u],head[u]=cnt;\n e[++cnt].to=u,e[cnt].nxt=head[v],head[v]=cnt;\n}\nint fa[maxn][18],dep[maxn];\n\nnamespace Subtask1{\n ll dis[maxn];\n void dfs(int u,int f,int d){\n fa[u][0]=f,dep[u]=d,dis[u]=dis[f]+a[u];\n for(int k=1;(1<<k)<=dep[u];++k){\n fa[u][k]=fa[fa[u][k-1]][k-1];\n }\n for(int i=head[u];i;i=e[i].nxt){\n int v=e[i].to;\n if(v==f) continue;\n dfs(v,u,d+1);\n }\n }\n inline int get_LCA(int u,int v){\n if(dep[u]>dep[v]) swap(u,v);\n for(int k=17;k>=0;--k){\n if(dep[v]-(1<<k)>=dep[u]) v=fa[v][k];\n }\n if(u==v) return u;\n for(int k=17;k>=0;--k){\n if(fa[u][k]!=fa[v][k]) u=fa[u][k],v=fa[v][k];\n }\n return fa[u][0];\n }\n int main(){\n dfs(1,0,0);\n while(q--){\n int u=read(),v=read();\n int lca=get_LCA(u,v);\n printf(\"%lld\\n\",dis[u]+dis[v]-2*dis[lca]+a[lca]);\n }\n return 0; \n }\n}\n\nnamespace Subtask2{\n struct Matrix{\n ll a[2][2];\n Matrix(){\n a[0][0]=a[1][1]=0;\n a[0][1]=a[1][0]=inf;\n }\n Matrix operator*(const Matrix &rhs)const{\n Matrix res;\n res.a[0][0]=min(a[0][0]+rhs.a[0][0],a[0][1]+rhs.a[1][0]);\n res.a[0][1]=min(a[0][0]+rhs.a[0][1],a[0][1]+rhs.a[1][1]);\n res.a[1][0]=min(a[1][0]+rhs.a[0][0],a[1][1]+rhs.a[1][0]);\n res.a[1][1]=min(a[1][0]+rhs.a[0][1],a[1][1]+rhs.a[1][1]);\n return res;\n }\n }F[maxn][18];\n void dfs(int u,int f,int d){\n fa[u][0]=f,dep[u]=d;\n if(f){\n F[u][0].a[0][0]=a[f],F[u][0].a[0][1]=0,F[u][0].a[1][0]=a[f],F[u][0].a[1][1]=inf;\n }\n for(int k=1;(1<<k)<=dep[u];++k){\n fa[u][k]=fa[fa[u][k-1]][k-1];\n F[u][k]=F[u][k-1]*F[fa[u][k-1]][k-1];\n }\n for(int i=head[u];i;i=e[i].nxt){\n int v=e[i].to;\n if(v==f) continue;\n dfs(v,u,d+1);\n }\n }\n inline void query(int u,int v){\n int tmpu=u,tmpv=v;\n Matrix M1,M2;\n if(dep[u]>dep[v]){\n for(int k=__lg(dep[u]-dep[v]);k>=0;--k){\n if(dep[u]-(1<<k)>=dep[v]) M1=M1*F[u][k],u=fa[u][k];\n }\n if(u==v) return printf(\"%lld\\n\",a[tmpu]+M1.a[0][0]),void();\n }\n if(dep[v]>dep[u]){\n for(int k=__lg(dep[v]-dep[u]);k>=0;--k){\n if(dep[v]-(1<<k)>=dep[u]) M2=M2*F[v][k],v=fa[v][k];\n }\n if(u==v) return printf(\"%lld\\n\",a[tmpv]+M2.a[0][0]),void();\n }\n for(int k=__lg(dep[u]);k>=0;--k){\n if(fa[u][k]!=fa[v][k]){\n M1=M1*F[u][k],M2=M2*F[v][k];\n u=fa[u][k],v=fa[v][k];\n } \n }\n M1=M1*F[u][0],M2=M2*F[v][0];\n u=fa[u][0],v=fa[v][0];\n ll ans=a[tmpu]+a[tmpv]+min({M1.a[0][0]+M2.a[0][0]-a[u],M1.a[0][0]+M2.a[0][1],M1.a[0][1]+M2.a[0][0],M1.a[0][1]+M2.a[0][1]});\n printf(\"%lld\\n\",ans);\n }\n int main(){\n dfs(1,0,0);\n while(q--){\n int u=read(),v=read();\n query(u,v);\n }\n return 0;\n }\n}\n\nint main(){\n // freopen(\"transmit.in\",\"r\",stdin);\n // freopen(\"transmit.out\",\"w\",stdout);\n n=read(),q=read(),k=read();\n for(int i=1;i<=n;++i) a[i]=read();\n for(int i=1;i<n;++i){\n int u=read(),v=read();\n add_edge(u,v);\n }\n if(k==1) return Subtask1::main();\n if(k==2) return Subtask2::main();\n return 0;\n}",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "数据传输",
"query": "# 数据传输\n## 题目描述\n小 C 正在设计计算机网络中的路由系统。\n\n测试用的网络总共有 $n$ 台主机,依次编号为 $1 \\sim n$。这 $n$ 台主机之间由 $n - 1$ 根网线连接,第 $i$ 条网线连接个主机 $a_i$ 和 $b_i$。保证任意两台主机可以通过有限根网线直接或者间接地相连。受制于信息发送的功率,主机 $a$ 能够直接将信息传输给主机 $b$ 当且仅当两个主机在可以通过不超过 $k$ 根网线直接或者间接的相连。\n\n在计算机网络中,数据的传输往往需要通过若干次转发。假定小 C 需要将数据从主机 $a$ 传输到主机 $b$($a \\neq b$),则其会选择出若干台用于传输的主机 $c_1 = a, c_2, \\ldots, c_{m - 1}, c_m = b$,并按照如下规则转发:对于所有的 $1 \\le i < m$,主机 $c_i$ 将信息直接发送给 $c_{i + 1}$。\n\n每台主机处理信息都需要一定的时间,第 $i$ 台主机处理信息需要 $v_i$ 单位的时间。数据在网络中的传输非常迅速,因此传输的时间可以忽略不计。据此,上述传输过程花费的时间为 $\\sum_{i = 1}^{m} v_{c_i}$。\n\n现在总共有 $q$ 次数据发送请求,第 $i$ 次请求会从主机 $s_i$ 发送数据到主机 $t_i$。小 C 想要知道,对于每一次请求至少需要花费多少单位时间才能完成传输。\n## 输入格式\n\n输入的第一行包含三个正整数 $n, Q, k$,分别表示网络主机个数,请求个数,传输参数。数据保证 $1 \\le n \\le 2 \\times {10}^5$,$1 \\le Q \\le 2 \\times {10}^5$,$1 \\le k \\le 3$。\n\n输入的第二行包含 $n$ 个正整数,第 $i$ 个正整数表示 $v_i$,保证 $1 \\le v_i \\le {10}^9$。\n\n接下来 $n - 1$ 行,第 $i$ 行包含两个正整数 $a_i, b_i$,表示一条连接主机 $a_i, b_i$ 的网线。保证 $1 \\le a_i, b_i \\le n$。\n\n接下来 $Q$ 行,第 $i$ 行包含两个正整数 $s_i, t_i$,表示一次从主机 $s_i$ 发送数据到主机 $t_i$ 的请求。保证 $1 \\le s_i, t_i \\le n$,$s_i \\ne t_i$。\n## 输出格式\n\n$Q$ 行,每行一个正整数,表示第 $i$ 次请求在传输的时候至少需要花费多少单位的时间。\n## 样例\n### 样例 1\n输入:\n7 3 3\n1 2 3 4 5 6 7\n1 2\n1 3\n2 4\n2 5\n3 6\n3 7\n4 7\n5 6\n1 2\n输出:\n12\n12\n3\n\n对于第一组请求,由于主机 $4, 7$ 之间需要至少 $4$ 根网线才能连接,因此数据无法在两台主机之间直接传输,其至少需要一次转发;我们让其在主机 $1$ 进行一次转发,不难发现主机 $1$ 和主机 $4, 7$ 之间都只需要两根网线即可连接,且主机 $1$ 的数据处理时间仅为 $1$,为所有主机中最小,因此最少传输的时间为 $4 + 1 + 7 = 12$。\n\n对于第三组请求,由于主机 $1, 2$ 之间只需要 $1$ 根网线就能连接,因此数据直接传输就是最优解,最少传输的时间为 $1 + 2 = 3$。\n## 数据范围与提示\n对于所有的测试数据,满足 $1 \\le n \\le 2 \\times {10}^5$,$1 \\le Q \\le 2 \\times {10}^5$,$1 \\le k \\le 3$,$1 \\le a_i, b_i \\le n$,$1 \\le s_i, t_i \\le n$,$s_i \\ne t_i$。",
"test": {
"input": "7 3 3\n1 2 3 4 5 6 7\n1 2\n1 3\n2 4\n2 5\n3 6\n3 7\n4 7\n5 6\n1 2",
"output": "12\n12\n3"
}
},
{
"code_id": 0,
"code": "// {'input': '1 8\\n7 4\\n8 4\\n9 1\\n10 4\\n11 1\\n5 1\\n1 4\\n1 1', 'output': '3'} \n/*\n无问题\n*/\n#include<bits/stdc++.h>\n\n#define fint register int\n\n#define h 5001\n\n#define p 4795445\n\nusing namespace std;\n\nint T,n;\n\ninline void sub_a();\n\ninline void sub_b();\n\ninline void sub_c();\n\nint main()\n\n{\t\n\n\tcin>>T>>n;\n\n\tif(n==2)\n\n\tsub_a();\n\n\tif(n==3)\n\n\tsub_b();\n\n\tif(n==4)\n\n\tsub_c();\n\n}\n\n\n\ninline void sub_a()\n\n{\n\n\tint a,b,c,d;\n\n\twhile(T--)\n\n\t{\n\n\t\tcin>>a>>b;\n\n\t\tcin>>c>>d;\n\n\t\tif((a==0&&b==1&&c==0&&d==2)||(a==0&&b==2&&c==0&&d==1))\n\n\t\tputs(\"1\");\n\n\t\telse\n\n\t\tif(a==c&&a!=0)\n\n\t\tputs(\"1\");\n\n\t\telse\n\n\t\tputs(\"2\");\n\n\t}\n\n\treturn ;\n\n}\n\n\n\ninline void sub_b()\n\n{\n\n\tint a,b,c,d,e,f;\n\n\twhile(T--)\n\n\t{\n\n\t\tcin>>a>>b;\n\n\t\tcin>>c>>d;\n\n\t\tcin>>e>>f;\n\n\t\tif(a==c&&a==e&&a!=0)\n\n\t\tputs(\"1\");\n\n\t\telse\n\n\t\tif(a!=c&&a!=e&&c!=e)\n\n\t\tputs(\"3\");\n\n\t\telse\n\n\t\tputs(\"2\");\n\n\t}\n\n\treturn ;\n\n}\n\n\n\ninline void sub_c()\n\n{\n\n\tint vis[100]={0};\n\n\tint a,b,c,d,e,f,i,j;\n\n\twhile(T--)\n\n\t{\n\n\t\tcin>>a>>b;\n\n\t\tcin>>c>>d;\n\n\t\tcin>>e>>f;\n\n\t\tcin>>i>>j;\n\n\t\tvis[a]++,vis[c]++,vis[e]++,vis[i]++;\n\n\t\tif(a==c&&a==e&&a==i&&a!=0)\n\n\t\tputs(\"1\");\n\n\t\telse\n\n\t\tif((a==c&&b!=d&&e==i)||(e==i&&f!=j&&a==c)||(a==c&&a!=0&&e==i&&e!=0)||(vis[a]==3&&a!=0||vis[c]==3&&c!=0||vis[e]==3&&e!=0||vis[i]==3&&i!=0))\n\n\t\tputs(\"2\");\n\n\t\telse\n\n\t\tif(a!=c&&a!=e&&a!=i&&c!=e&&c!=i&&e!=i)\n\n\t\tputs(\"4\");\n\n\t\telse\n\n\t\tputs(\"3\");\n\n\t}\n\n\treturn ;\n\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "斗地主",
"query": "# 斗地主\n## 题目描述\n牛牛最近迷上了一种叫斗地主的扑克游戏。斗地主是一种使用黑桃、红心、梅花、方片的 $ A $ 到 $ K $ 加上大小王的共 $ 54 $ 张牌来进行的扑克牌游戏。在斗地主中,牌的大小关系根据牌的数码表示如下:$ 3 < 4 < 5 < 6 < 7 < 8 < 9 < 1 0 < J < Q < K < A < 2 < $ 小王 $ < $ 大王,而花色并不对牌的大小产生影响。每一局游戏中,一副手牌由 $ n $ 张牌组成。游戏者每次可以根据规定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。 \n现在,牛牛只想知道,对于自己的若干组手牌,分别最少需要多少次出牌可以将它们打光。 \n需要注意的是,本题中游戏者每次可以出手的牌型与一般的斗地主相似而略有不同。具体规则如下:\n\n|牌型|牌型说明|\n|-|-|\n|单张牌|-|\n|对子牌|两张码数相同的牌。|\n|三张牌|三张码数相同的牌。|\n|炸弹|四张同点牌。如四个 A。|\n|火箭|即双王(双鬼牌)。|\n|三带一|三张码数相同的牌 + 一张单牌。例如:三张 3+单 4。|\n|三带二|三张码数相同的牌 + 一对牌。例如:三张 3+对 4。|\n|单顺子|五张或更多码数连续的单牌(不包括 2点和双王)例如:单 7+单 8+单 9+单 10+单 J。|\n|双顺子|三对或更多码数连续的对牌(不包括 2点和双王)。例如:对 3+对 4+对 5。|\n|三顺子|二个或更多码数连续的三张牌(不能包括 2 点和双王)。例如:三张 3+三张 4+三张 5。|\n|四带二|四张码数相同的牌+任意两张单牌(或任意两对牌)例如:四张 5+单 3+单 8 或 四张 4+对 5+对 7。|\n\n另外,在顺牌(单顺子、双顺子、三顺子)中,牌的花色不要求相同。\n## 输入格式\n第一行包含用空格隔开的 $ 2 $ 个正整数 $ T $,$ N $,表示手牌的组数以及每组手牌的张数。\r\n\r\n接下来 $ T $ 组数据,每组数据 $ N $ 行,每行一个非负整数对 $ A_i, B_i $,表示一张牌,其中 $ A_i $ 表示牌的数码,$ B_i $ 表示牌的花色,中间用空格隔开。特别的,我们用 $ 1 $ 来表示数码 $ A $,$ 11 $ 表示数码 $ J $,$ 12 $ 表示数码 $ Q $,$ 13 $ 表示数码 $ K $;黑桃、红心、梅花、方片分别用 $ 1 - 4 $ 来表示;小王的表示方法为 `0 1` ,大王的表示方法为 `0 2`。\n## 输出格式\n共 $ T $ 行,每行一个整数,表示打光第 $ i $ 组手牌的最少次数。\n## 样例\n### 样例 1\n输入:\n1 8\n7 4\n8 4\n9 1\n10 4\n11 1\n5 1\n1 4\n1 1\n输出:\n3\n\n\n### 样例 2\n输入:\n1 17\n12 3\n4 3\n2 3\n5 4\n10 2\n3 3\n12 2\n0 1\n1 3\n10 1\n6 2\n12 1\n11 3\n5 2\n12 4\n2 2\n7 2\n输出:\n6\n\n\n## 数据范围与提示\n|测试点|$T$|$n$|\r\n|-|-|-|\r\n|$ 1 \\sim 6 $|$T=100$|$ n \\leq 4 $|\r\n|$ 7 \\sim 12 $|$T=100$|$ n = $ 测试点编号 $+3$|\r\n|$13 \\sim 20$|$T=10$|$ n = $ 测试点编号 $+3$|",
"test": {
"input": "1 8\n7 4\n8 4\n9 1\n10 4\n11 1\n5 1\n1 4\n1 1",
"output": "3"
}
},
{
"code_id": 3,
"code": "// {'input': '10 100\\nA 97\\nQ 1\\nQ 1\\nA 17\\nQ 2\\nA 63\\nQ 1\\nQ 1\\nQ 3\\nA 99', 'output': '97\\n97\\n97\\n60\\n60\\n97'} \n/*\n 没问题\n*/\n\n#include<bits/stdc++.h>\n#define ll long long\nusing namespace std;\nconst int N=1e5+1;\nint m,len,num;\nll mod;\nstruct node {\n\tint left,right;\n\tll maxx;\n} a[N<<2];\ninline ll read() {\n\tll x=0,y=0,z=getchar();\n\twhile(!isdigit(z)&&(y=z=='-',1))z=getchar();\n\twhile(isdigit(z))x=(x<<3)+(x<<1)+(z^48),z=getchar();\n\treturn y?-x:x;\n}\ninline ll max(ll x,ll y) {\n\treturn x>y?x:y;\n}\ninline void up(int k) {\n\ta[k].maxx=max(a[k<<1].maxx,a[k<<1|1].maxx);\n}\ninline void build(int k,int l,int r) {\n\ta[k].left=l;\n\ta[k].right=r;\n\tif(l==r) {\n\t\ta[k].maxx=0;\n\t\treturn;\n\t}\n\tint mid=(l+r)>>1;\n\tbuild(k<<1,l,mid);\n\tbuild(k<<1|1,mid+1,r);\n\tup(k);\n}\ninline void find(int k,int x,ll y) {\n\tif(a[k].left==a[k].right) {\n\t\ta[k].maxx+=y;\n\t\treturn;\n\t}\n\tint mid=(a[k].left+a[k].right)>>1;\n\tif(x<=mid)find(k<<1,x,y);\n\telse find(k<<1|1,x,y);\n\tup(k);\n}\ninline ll search(int k,int l,int r) {\n\tif(l<=a[k].left&&a[k].right<=r)return a[k].maxx;\n\tll MAX=0;\n\tint mid=(a[k].left+a[k].right)>>1;\n\tif(l<=mid)MAX=max(MAX,search(k<<1,l,r));\n\tif(r>mid)MAX=max(MAX,search(k<<1|1,l,r));\n\treturn MAX;\n}\nint main() {\n\tchar op;\n\tint x;\n\tm=read(),mod=read();\n\tbuild(1,1,N);\n\twhile(m--) {\n\t\tgetchar(),op=getchar(),x=read();\n\t\tswitch(op) {\n\t\t\tcase 'A':\n\t\t\t\tlen++;\n\t\t\t\tfind(1,len,(x+num)%mod);\n\t\t\t\tbreak;\n\t\t\tcase 'Q':\n\t\t\t\tnum=search(1,len-x+1,len);\n\t\t\t\tprintf(\"%d\\n\",num);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn 0;\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "最大数",
"query": "# 最大数\n## 题目描述\n\n给定一个正整数数列 $a_1, a_2, a_3, \\cdots , a_n$,每一个数都在 $0\\sim p – 1$ 之间。可以对这列数进行两种操作:\n+ 添加操作:向序列后添加一个数,序列长度变成 $n + 1$;\n+ 询问操作:询问这个序列中最后 $L$ 个数中最大的数是多少。\n\n程序运行的最开始,整数序列为空。写一个程序,读入操作的序列,并输出询问操作的答案。\n## 输入格式\n第一行有两个正整数 $m,p$,意义如题目描述;\n\n接下来 $m$ 行,每一行表示一个操作。如果该行的内容是 `Q L`,则表示这个操作是询问序列中最后 $L$ 个数的最大数是多少;如果是 `A t`,则表示向序列后面加一个数,加入的数是 $(t+a)\\bmod p$。其中,$t$ 是输入的参数,$a$ 是在这个添加操作之前最后一个询问操作的答案(如果之前没有询问操作,则 $a = 0$)。\n\n第一个操作一定是添加操作。对于询问操作,$L\\gt 0$ 且不超过当前序列的长度。\n## 输出格式\n对于每一个询问操作,输出一行。该行只有一个数,即序列中最后 $L$ 个数的最大数。\n## 样例\n输入:\n10 100\nA 97\nQ 1\nQ 1\nA 17\nQ 2\nA 63\nQ 1\nQ 1\nQ 3\nA 99\n输出:\n97\n97\n97\n60\n60\n97\n\n最后的序列是 $97,14,60,96$。\n## 数据范围与提示\n对于全部数据,$1\\le m\\le 2\\times 10^5,1\\le p\\le 2\\times 10^9,0\\le t\\lt p$。\n",
"test": {
"input": "10 100\nA 97\nQ 1\nQ 1\nA 17\nQ 2\nA 63\nQ 1\nQ 1\nQ 3\nA 99",
"output": "97\n97\n97\n60\n60\n97"
}
},
{
"code_id": 0,
"code": "// {'input': '5 3 1 4\\n-1 -5 -2\\n1 2 1\\n1 3 1\\n2 4 2\\n2 5 3', 'output': '-1'} \n#include<bits/stdc++.h>\n#include<sys/mman.h>\n#include<fcntl.h>\nusing namespace std;\nusing llt=long long;\nusing llf=long double;\nusing ull=unsigned long long;\n#define Ct const\n#define Il __always_inline\n#define For(i,a,b,c) for(int i=(a);i<=(b);i+=(c))\n#define For_(i,a,b,c) for(int i=(a);i>=(b);i-=(c))\n#define For_it(i,a,b) for(auto i=(a);i!=(b);++i)\n\nnamespace IO{\n#ifdef ONLINE_JUDGE\n\tint Fin=fileno(stdin); FILE* Fout=stdout;\n#elif defined(UN_FAST)\n\tFILE *Fin=freopen(\"in_out/in.in\",\"r\",stdin),*Fout=freopen(\"in_out/out.out\",\"w\",stdout);\n#else\n\tint Fin=open(\"in_out/in.in\",0); FILE *Fout=freopen(\"in_out/out.out\",\"w\",stdout);\n#endif // file\n#ifdef UN_FAST\n\tchar cc;\n\t#define G (cc=getchar())\n\t#define C cc\n#else\n\tconst char *I=(char*)mmap(0,1<<24,1,2,Fin,0)-1; \n\t#define G (*++I)\n\t#define C (*I)\n#endif // fast (mmap)\n#define P(x) putc_unlocked(x,Fout)\n\ttemplate<class T> Il void read(T &x){x=0;bool f=0; while(f|=G==45,C<48); while(x=x*10+(C&15),G>47); f?x=-x:0;}\n\ttemplate<class T> void write(T x){if(x<0) P('-'),x=-x; if(x/10) write(x/10); P('0'+x%10);}\n\tIl void read(char &c){while(G<33); c=C;} void read(char *s){char *p=s-1; while(G<33); while(*++p=C,G>32); *++p='\\0';}\n\tIl void read(string &s){s.clear(); while(G<33); while(s.push_back(C),G>32);}\n\ttemplate<class T=int> Il T read(){T a; return read(a),a;}\n\ttemplate<class T,class ...Argc> Il void read(T &x,Argc &...argc){read(x),read(argc...);}\n\tIl void write(const char &c){P(c);} Il void write(const char *s){for(const char *c=s;*c!='\\0';++c) P(*c);}\n\tIl void write(const string &s){for(const char &c:s) P(c);}\n\ttemplate<class T,class ...Argc> Il void write(const T &x,const Argc &...argc){write(x),write(argc...);}\n\ttemplate<class T> Il void Write(const T &x){write(x),P(' ');} Il void Write(const char &c){P(c); if(c>32) P(' ');}\n\ttemplate<class T,class ...Argc> Il void Write(const T &x,const Argc &...argc){Write(x),Write(argc...);}\n#undef G\n#undef C\n#undef P\n}using IO::read; using IO::write; using IO::Write;\n\nconstexpr int N=2e5+3,Inf=0x3f3f3f3f;\n\nint n,m,cl,cr,wt[N];\nint __cnt,__cnt2;\nstruct Graph{\n\tint hd[N],to[N<<1],nt[N<<1],col[N<<1],tot=1;\n\tIl void Add(Ct int &u,Ct int &v,Ct int &w){col[++tot]=w,to[tot]=v,nt[tot]=hd[u],hd[u]=tot;}\n#define For_to(i,u,v,g) for(int i=g.hd[u],v=g.to[i];i;i=g.nt[i],v=g.to[i])\n}g;\nclass PDIV{\nprivate:\n\tint sz[N],mav[N],rt,dis[N],dep[N],mdp[N],ans;\n\tbool vis[N];\n\tvoid Root(Ct int &u,Ct int &fa,int usz){\n\t\tsz[u]=1,mav[u]=0;\n\t\tFor_to(i,u,v,g) if(v!=fa&&!vis[v]) Root(v,u,usz),sz[u]+=sz[v],mav[u]=max(mav[u],sz[v]);\n\t\tmav[u]=max(mav[u],usz-sz[u]);\n\t\tif(mav[rt]>mav[u]) rt=u;\n\t}\n\tvoid Size(Ct int &u,Ct int &fa){sz[u]=1; For_to(i,u,v,g) if(v!=fa&&!vis[v]) Size(v,u),sz[u]+=sz[v];}\n\tvoid Getu(Ct int &u,Ct int &fa,Ct int &la){\n\t\tFor_to(i,u,v,g) if(v!=fa&&!vis[v]){\n\t\t\tdep[v]=dep[u]+1,dis[v]=dis[u]+(g.col[i]==la?0:wt[g.col[i]]);\n\t\t\tGetu(v,u,g.col[i]); mdp[u]=max(mdp[v]+1,mdp[u]);\n\t\t}\n\t}\n\t\n\tvector<int> ord,cld[N];\n\tclass SORT{\n\tprivate:\n\t\tPDIV *F;\n\t\tbool vis[N]; int ma[N];\n\tpublic:\n\t\tSORT(PDIV *_):F(_){};\n\t\tIl void operator()(){\n\t\t\tFor_to(i,F->rt,v,g) if(!F->vis[v]){\n\t\t\t\tint col=g.col[i];\n\t\t\t\tF->cld[col].push_back(v),ma[col]=max(ma[col],F->mdp[v]);\n\t\t\t\tif(!vis[col]) F->ord.push_back(col),vis[col]=1;\n\t\t\t}\n\t\t\tsort(F->ord.begin(),F->ord.end(),[this](Ct int &a,Ct int &b){return this->ma[a]<this->ma[b];});\n\t\t\tfor(Ct int &c:F->ord)\n\t\t\t\tsort(F->cld[c].begin(),F->cld[c].end(),[this](Ct int &a,Ct int &b){return this->F->mdp[a]<this->F->mdp[b];});\n\t\t\tFor_to(i,F->rt,v,g) if(!F->vis[v]) ma[g.col[i]]=vis[g.col[i]]=0;\n\t\t}\n\t}Sort=SORT(this);\n\n\tclass CALC{\n\tprivate:\n\t\tint mad[N],mas[N],lend,lens,posd,poss;\n\t\tqueue<pair<int,int>> que; PDIV *F;\n\t\tclass Mque{\n\t\tprivate: int que[N],*hd=que+1,*tl=que;\n\t\tpublic:\n\t\t\tIl bool Empty(){return hd>tl;} Il void Clear(){hd=que+1,tl=que;}\n\t\t\tIl void Push(Ct int &p,Ct int *pd){while(!Empty()&&pd[*tl]<=pd[p]) --tl,++__cnt; *++tl=p;}\n\t\t\tIl int Front(Ct int &lim){while(!Empty()&&*hd>lim) ++hd,++__cnt; return Empty()?N-1:*hd;}\n\t\t}qd,qs;\n\t\tIl int Get(Ct int &u,Ct int &col){\n\t\t\tint l=max(0,cl-F->dep[u]);\n\t\t\twhile(posd>=l) qd.Push(posd,mad),--posd;\n\t\t\twhile(poss>=l) qs.Push(poss,mas),--poss;\n\t\t\treturn max(mad[qd.Front(cr-F->dep[u])],mas[qs.Front(cr-F->dep[u])]-wt[col])+F->dis[u];\n\t\t}\n\tpublic:\n\t\tCALC(PDIV *_):F(_){memset(mad,-0x3f,sizeof(mad)),memset(mas,-0x3f,sizeof(mas)),mad[0]=0;}\n\t\tIl void Clr(){For(i,1,lend,1) mad[i]=-Inf; posd=lend=0;}\n\t\tIl void operator()(Ct int &nwc){\n\t\t\t__cnt=0;\n\t\t\tfor(int nw:F->cld[nwc]){\n\t\t\t\tque.emplace(nw,F->rt);\n\t\t\t\twhile(!que.empty()){\n\t\t\t\t\tauto tmp=que.front(); que.pop();\n\t\t\t\t\tint u=tmp.first,fa=tmp.second;\n\t\t\t\t\tF->ans=max(F->ans,Get(u,nwc));\n\t\t\t\t\tFor_to(i,u,v,g) if(!F->vis[v]&&fa!=v) que.emplace(v,u);\n\t\t\t\t\t++__cnt;\n\t\t\t\t}\n\t\t\t\tque.emplace(nw,F->rt);\n\t\t\t\twhile(!que.empty()){\n\t\t\t\t\tauto tmp=que.front(); que.pop();\n\t\t\t\t\tint u=tmp.first,fa=tmp.second;\n\t\t\t\t\tmas[F->dep[u]]=max(mas[F->dep[u]],F->dis[u]),lens=max(lens,F->dep[u]);\n\t\t\t\t\tFor_to(i,u,v,g) if(!F->vis[v]&&fa!=v) que.emplace(v,u);\n\t\t\t\t\t++__cnt;\n\t\t\t\t}\n\t\t\t\tposs=lens,qd.Clear(),qs.Clear();\n\t\t\t}\n\t\t\tlend=max(lend,lens),posd=lend;\n\t\t\tFor(i,1,lens,1) mad[i]=max(mas[i],mad[i]),mas[i]=-Inf; poss=lens=0;\n\t\t}\n\t}Calc=CALC(this);\n\n\tvoid Div(){\n\t\tvis[rt]=1;\n\t\tdis[rt]=dep[rt]=0,Getu(rt,0,0);\n\t\tSort();\n\t\tint pos=0;\n\t\tfor(Ct int &c:ord) Calc(c),cld[c].clear(); Calc.Clr(); ord.clear();\n\t\tSize(rt,0); int u=rt;\n\t\tFor_to(i,u,v,g) if(!vis[v]) rt=0,Root(v,u,sz[v]),Div();\n\t}\npublic:\n\tPDIV(){mav[0]=0x3f3f3f3f,ans=-Inf;}\n\tIl int operator()(){Root(1,0,n),Div(); return ans;}\n}Pdiv;\n\nint main(){\n\tread(n,m,cl,cr);\n\tFor(i,1,m,1) read(wt[i]);\n\tFor(i,1,n-1,1){int u,v,c; read(u,v,c); g.Add(u,v,c),g.Add(v,u,c);}\n\twrite(Pdiv());\n}",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "树的难题",
"query": "# 树的难题\n## 题目描述\n给你一棵 $n$ 个点的无根树。\r\n\r\n树上的每条边具有颜色。一共有 $m$ 种颜色,编号为 $1$ 到 $m$,第 $i$ 种颜色的权值为 $c_i$。\r\n\r\n对于一条树上的简单路径,路径上经过的所有边按顺序组成一个颜色序列,序列可以划分成若干个相同颜色段。定义路径权值为颜色序列上每个同颜色段的颜色权值之和。\r\n\r\n请你计算,经过边数在 $l$ 到 $r$ 之间的所有简单路径中,路径权值的最大值。\n## 输入格式\n第一行,四个整数 $n, m, l, r$。 \r\n第二行,$m$ 个整数 $c_1, c_2, \\ldots, c_m$,由空格隔开,依次表示每个颜色的权值。 \r\n接下来 $n-1$ 行,每行三个整数 $u, v, c$,表示点 $u$ 和点 $v$ 之间有一条颜色为 $c$ 的边。\n## 输出格式\n输出一行,一个整数,表示答案。\n## 样例\n### 样例 1\n输入:\n5 3 1 4\n-1 -5 -2\n1 2 1\n1 3 1\n2 4 2\n2 5 3\n输出:\n-1\n\n颜色权值均为负,最优路径为 $(1, 2)$ 或 $(1, 3)$。\n### 样例 2\n输入:\n8 4 3 4\n-7 9 6 1\n1 2 1\n1 3 2\n1 4 1\n2 5 1\n5 6 2\n3 7 1\n3 8 3\n输出:\n11\n\n最优路径为 $(3, 1, 2, 5, 6)$,其颜色序列为 $(2, 1, 1, 2)$。\n## 数据范围与提示\n$ n\\leq 2\times10^5, m\\leq n $",
"test": {
"input": "5 3 1 4\n-1 -5 -2\n1 2 1\n1 3 1\n2 4 2\n2 5 3",
"output": "-1"
}
},
{
"code_id": 0,
"code": "// {'input': '3 1\\n2\\n2\\n2', 'output': '2'} \n/*\n无问题\n*/\n#include <cassert>\n#include <cmath>\n#include <cstdint>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <algorithm>\n#include <bitset>\n#include <complex>\n#include <deque>\n#include <functional>\n#include <iostream>\n#include <limits>\n#include <map>\n#include <numeric>\n#include <queue>\n#include <random>\n#include <set>\n#include <sstream>\n#include <string>\n#include <unordered_map>\n#include <unordered_set>\n#include <utility>\n#include <vector>\n\nusing namespace std;\n\nusing Int = long long;\n\ntemplate <class T1, class T2> ostream &operator<<(ostream &os, const pair<T1, T2> &a) { return os << \"(\" << a.first << \", \" << a.second << \")\"; };\ntemplate <class T> ostream &operator<<(ostream &os, const vector<T> &as) { const int sz = as.size(); os << \"[\"; for (int i = 0; i < sz; ++i) { if (i >= 256) { os << \", ...\"; break; } if (i > 0) { os << \", \"; } os << as[i]; } return os << \"]\"; }\ntemplate <class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << \" \"; cerr << endl; }\ntemplate <class T> bool chmin(T &t, const T &f) { if (t > f) { t = f; return true; } return false; }\ntemplate <class T> bool chmax(T &t, const T &f) { if (t < f) { t = f; return true; } return false; }\n#define COLOR(s) (\"\\x1b[\" s \"m\")\n\n////////////////////////////////////////////////////////////////////////////////\n// 2^61 - 1 = 2'305'843'009'213'693'951\nstruct ModLong61 {\n static constexpr unsigned long long M = (1ULL << 61) - 1;\n unsigned long long x;\n constexpr ModLong61() : x(0ULL) {}\n constexpr ModLong61(unsigned x_) : x(x_) {}\n constexpr ModLong61(unsigned long long x_) : x(x_ % M) {}\n constexpr ModLong61(int x_) : x((x_ < 0) ? (x_ + static_cast<long long>(M)) : x_) {}\n constexpr ModLong61(long long x_) : x(((x_ %= static_cast<long long>(M)) < 0) ? (x_ + static_cast<long long>(M)) : x_) {}\n ModLong61 &operator+=(const ModLong61 &a) { x = ((x += a.x) >= M) ? (x - M) : x; return *this; }\n ModLong61 &operator-=(const ModLong61 &a) { x = ((x -= a.x) >= M) ? (x + M) : x; return *this; }\n ModLong61 &operator*=(const ModLong61 &a) {\n const unsigned __int128 y = static_cast<unsigned __int128>(x) * a.x;\n x = (y >> 61) + (y & M);\n x = (x >= M) ? (x - M) : x;\n return *this;\n }\n ModLong61 &operator/=(const ModLong61 &a) { return (*this *= a.inv()); }\n ModLong61 pow(long long e) const {\n if (e < 0) return inv().pow(-e);\n ModLong61 a = *this, b = 1ULL; for (; e; e >>= 1) { if (e & 1) b *= a; a *= a; } return b;\n }\n ModLong61 inv() const {\n unsigned long long a = M, b = x; long long y = 0, z = 1;\n for (; b; ) { const unsigned long long q = a / b; const unsigned long long c = a - q * b; a = b; b = c; const long long w = y - static_cast<long long>(q) * z; y = z; z = w; }\n assert(a == 1ULL); return ModLong61(y);\n }\n ModLong61 operator+() const { return *this; }\n ModLong61 operator-() const { ModLong61 a; a.x = x ? (M - x) : 0ULL; return a; }\n ModLong61 operator+(const ModLong61 &a) const { return (ModLong61(*this) += a); }\n ModLong61 operator-(const ModLong61 &a) const { return (ModLong61(*this) -= a); }\n ModLong61 operator*(const ModLong61 &a) const { return (ModLong61(*this) *= a); }\n ModLong61 operator/(const ModLong61 &a) const { return (ModLong61(*this) /= a); }\n template <class T> friend ModLong61 operator+(T a, const ModLong61 &b) { return (ModLong61(a) += b); }\n template <class T> friend ModLong61 operator-(T a, const ModLong61 &b) { return (ModLong61(a) -= b); }\n template <class T> friend ModLong61 operator*(T a, const ModLong61 &b) { return (ModLong61(a) *= b); }\n template <class T> friend ModLong61 operator/(T a, const ModLong61 &b) { return (ModLong61(a) /= b); }\n explicit operator bool() const { return x; }\n bool operator==(const ModLong61 &a) const { return (x == a.x); }\n bool operator!=(const ModLong61 &a) const { return (x != a.x); }\n friend std::ostream &operator<<(std::ostream &os, const ModLong61 &a) { return os << a.x; }\n};\n////////////////////////////////////////////////////////////////////////////////\n\nusing Mint = ModLong61;\n\n#include <chrono>\n#ifdef LOCAL\nmt19937_64 rng(58);\n#else\nmt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());\n#endif\n\n\nint readInt() {\n int c;\n for (; ; ) {\n c = getchar();\n if ('0' <= c && c <= '9') break;\n }\n int x = c - '0';\n for (; ; ) {\n c = getchar();\n if (!('0' <= c && c <= '9')) return x;\n x = x * 10 + (c - '0');\n }\n}\nInt readLong() {\n int c;\n for (; ; ) {\n c = getchar();\n if ('0' <= c && c <= '9') break;\n }\n Int x = c - '0';\n for (; ; ) {\n c = getchar();\n if (!('0' <= c && c <= '9')) return x;\n x = x * 10 + (c - '0');\n }\n}\n\nconstexpr int H = 5;\nconstexpr int MS[H] = {10007, 10009, 10037, 10039, 10061};\nInt f[H][10'100];\n\nint main() {\n const Mint A = (unsigned long long)rng();\n const Mint B = (unsigned long long)rng();\n const int N = readInt();\n const int K = readInt();\n for (int i = 0; i < N; ++i) {\n const Int x = readLong() + 1;\n const Int key = (A * x + B).x;\n for (int h = 0; h < H; ++h) {\n f[h][key % MS[h]] ^= x;\n }\n }\n map<Int, int> cnt;\n for (int h = 0; h < H; ++h) {\n for (int r = 0; r < MS[h]; ++r) if (f[h][r]) {\n ++cnt[f[h][r]];\n }\n }\n for (const auto &kv : cnt) if (kv.second >= 2) {\n printf(\"%lld\\n\", kv.first - 1);\n }\n return 0;\n}\n",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "毒瘤题加强版",
"query": "# 毒瘤题加强版\n## 题目描述\n小江在找水题时发现了这样一道题:在集合中找出 $k\\ (k \\leq 500)$ 个出现了奇数次的非负整数 $a$。\n\n小江:这不是 `std::sort` 的水题吗。\n\n然后他就用暴力水过了这题。\n\n但是这里,为了避免暴力碾标算的情况,本题卡内存(逃\n## 输入格式\n第一行两个数 $n, k$,接下来 $n$ 行每行一个非负整数表示集合内的元素。\n## 输出格式\n**从小到大**输出 $k$ 行 $k$ 个数,中间用空格分隔。\n## 样例\n输入:\n3 1\n2\n2\n2\n输出:\n2\n\n\n## 数据范围与提示\n$100\\%$ 的数据保证 $n\\leq 3000000,0 \\leq a_i \\leq 10^{10}$ 。\n\n保证所有数据正好有 $k$ 个数出现了奇数次且 $k \\leq 500$ 。\n\n保证出现奇数次的 $k$ 个数是在 $[0,10^{10}]$ 中均匀随机的。\n",
"test": {
"input": "3 1\n2\n2\n2",
"output": "2"
}
},
{
"code_id": 0,
"code": "// {'input': '1 1 1\\n1200\\n34', 'output': '1234'} \n/*\n被样例卡RE\n*/\n#include<cstdio>\n\n#include<algorithm>\n\n#include<functional>\n\nlong long k,n,m,a[100010],b[100010],l=0,r=1000000000000ll,res,p[1000010],pb[1000010];\n\nlong long s;\n\nbool judge(long long x){\n\n\tif(a[1]==0) return 1;\n\n\tint p=0;\n\n\tfor(int i=1;i<=n;i++)p+=x/a[i];\n\n\treturn p>=k;\n\n}\n\nbool judgeb(long long x){\n\n\tif(b[1]==0) return 1;\n\n\tint p=0;\n\n\tfor(int i=1;i<=m;i++)p+=x/b[i];\n\n\treturn p>=k;\n\n}\n\nint main(){\n\n\tscanf(\"%lld%lld%lld\",&k,&n,&m);\n\n\tfor(int i=1;i<=n;i++)scanf(\"%lld\",a+i);\n\n\tfor(int i=1;i<=m;i++)scanf(\"%lld\",b+i),s+=b[i];\n\n\tstd::sort(a+1,a+n+1);\n\n\tstd::sort(b+1,b+m+1);\n\n\tn=std::min(k,n);\n\n\tm=std::min(k,m);\n\n\twhile(l<=r){\n\n\t\tlong long mid((l+r)>>1);\n\n\t\tif(judge(mid)){\n\n\t\t\tr=mid-1;\n\n\t\t\tres=mid;\n\n\t\t}else l=mid+1;\n\n\t}\n\n\tint t=0;\n\n\tif(res!=0)\n\n\t\tfor(int i=1;i<=n;i++)\n\n\t\t\tfor(int j=1;j*a[i]<=res;j++)\n\n\t\t\t\tp[++t]=j*a[i];\n\n\tstd::sort(p+1,p+t+1);\n\n\tl=0,r=1000000000000ll;\n\n\twhile(l<=r){\n\n\t\tlong long mid((l+r)>>1);\n\n\t\tif(judgeb(mid)){\n\n\t\t\tr=mid-1;\n\n\t\t\tres=mid;\n\n\t\t}else l=mid+1;\n\n\t}\n\n\tt=0;\n\n\tif(res!=0)\n\n\t\tfor(int i=1;i<=m;i++)\n\n\t\t\tfor(int j=1;j*b[i]<=res;j++)\n\n\t\t\t\tpb[++t]=j*b[i];\n\n\tstd::sort(pb+1,pb+t+1);\n\n\tres=0;\n\n\tfor(int i=1;i<=k;i++)\n\n\t\tres=std::max(res,p[i]+pb[t-i+1]);\n\n\tprintf(\"%lld\",res);\n\n\treturn 0;\n\n}",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "洗衣服",
"query": "# 洗衣服\n## 题目描述\n你现在要洗 $ l $ 件衣服。你有 $ n $ 台洗衣机和 $ m $ 台烘干机。由于你的机器非常的小,因此你每次只能洗涤(烘干)一件衣服。\r\n\r\n第 $ i $ 台洗衣机洗一件衣服需要 $ w_i $ 分钟,第 $ i $ 台烘干机烘干一件衣服需要 $ d_i $ 分钟。\r\n\r\n请问把所有衣服洗干净并烘干,最少需要多少时间?假设衣服在机器间转移不需要时间,并且洗完的衣服可以过一会再烘干。\n## 输入格式\n输入文件的第一行三个整数 $ l $、$ n $ 和 $ m $。 \r\n第二行 $ n $ 个整数 $ w_i $。 \r\n第三行 $ m $ 个整数 $ d_i $。\n## 输出格式\n一行一个整数,表示所需的最少时间。\n## 样例\n### 样例 1\n输入:\n1 1 1\n1200\n34\n输出:\n1234\n\n\n### 样例 2\n输入:\n2 3 2\n100 10 1\n10 10\n输出:\n12\n\n\n## 数据范围与提示\n对于 $ 100\\% $ 的数据,$ l \\leq 10 ^ 6, n, m \\leq 10 ^ 5 $。",
"test": {
"input": "1 1 1\n1200\n34",
"output": "1234"
}
},
{
"code_id": 0,
"code": "// {'input': '7 5 4\\n3 4\\n4 6\\n1 3\\n5 7\\n4 6\\n', 'output': '1 3 6 7\\n'} \n/*\n无问题\n\n*/\n#include<bits/stdc++.h>\nusing namespace std;\ntypedef pair<int,int> PII;\nconst int N = 210000;\nint n,m,x,l,r,ans[N],idx,s,e;\nPII b[N],c[N],a[N];\nbool cmp(PII a,PII b){\n\treturn a.first<b.first;\n}\nint main(){\n\t//freopen(\"station.in\",\"r\",stdin);\n\t//freopen(\"station.out\",\"w\",stdout);\n\t//memset(c,0x3f,sizeof c);\n\tscanf(\"%d%d%d\",&n,&m,&x);\n\tfor(int i=1;i<=m;i++){\n\t\tscanf(\"%d%d\",&l,&r);\n\t\tb[i] = make_pair(l,r); \n\t}\n\t//cout<<endl;\n\tsort(b+1,b+m+1,cmp);\n\tint k=1;\n\tfor(int i=1;i<=m;i++){\n\t\tif(b[i] != b[i-1]) a[k].first = b[i].first,a[k++].second = b[i].second;\n\t}\n\t//for(int i=1;i<k;i++) cout<<a[i].first<<' '<<a[i].second<<endl;\n\tint idx = 0;\n\tfor(int i=1;i<=m;i++){\n\t\tc[idx].first = a[i].first;\n\t\tc[idx].second = a[i].second;\n\t\twhile(true){\n\t\t\t//cout<<a[i].first<<' '<<a[i].second<<endl;\n\t\t\tif(a[++i].first>=c[idx].first&&a[i].first<=c[idx].second) c[idx].second = max(c[idx].second,a[i].second);\n\t\t\telse{\n\t\t\t\tidx++;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\ti--;\n\t}\n\t//for(int i=0;i<idx;i++) cout<<c[i].first<<' '<<c[i].second<<endl;\n\tfor(int i=0;i<idx;i++){\n\t\tif(c[i].first<x&&x<c[i].second){\n\t\t\ts = c[i].first,e = c[i].second;\n\t\t\tbreak;\n\t\t}\n\t}\n\t//cout<<s<<' '<<e<<endl;\n\tfor(int i=1;i<=m;i++){\n\t\tif(b[i].first>=s&&b[i].first<=x&&b[i].second>=s&&b[i].second<=x) ans[idx++] = b[i].first;\n\t\telse if(b[i].first>=s&&b[i].first<=x&&b[i].second<=e&&b[i].second>=x) ans[idx++] = b[i].first,ans[idx++] = b[i].second;\n\t\telse if(b[i].first>=x&&b[i].first<=e&&b[i].second>=x&&b[i].second<=e) ans[idx++] = b[i].second;\n\t}\n\tsort(ans,ans+idx);\n\tfor(int i=0;i<idx;i++){\n\t\tif(ans[i]!=ans[i-1]&&ans[i]!=x) \n\t\t\tprintf(\"%d \",ans[i]);\n\t}\n\treturn 0;\n} ",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "火车站",
"query": "# 火车站\n## 题目描述\n有 $n$ 个火车站排成一条直线,从 $1$ 到 $n$ 编号。一共有 $m$ 条火车轨道,每条轨道覆盖一段火车站区间 $[l_i, r_i]$。\n\n对于一个被多条火车轨道覆盖的火车站,火车在经过这里的时候,可以在此处改变轨道。但是火车无法掉头,只能朝着一个方向运行(即只能一直往 $1$ 的方向开或者一直往 $n$ 的方向开)。\n\n小 A 从火车站 $x$ 出发,即搭上了经过 $x$ 的任意一列火车(这列火车也可能是从车站 $x$ 出发)。这列火车可能行驶在火车站 $x$ 所处的任一条轨道上,其运行方向既可能是往 $1$ 的方向开,也可能是往 $n$ 的方向开。小 A 上车后就开始昏睡,直到乘坐的火车到达某条线路的终点站停下,他才醒过来。问小 A 最后可能到达的车站。\n\n注意:火车应运行至少一个车站,且火车切换轨道后不会立刻停下来,而是会继续沿着当前轨道前进。\n## 输入格式\n输入的第一行包含三个正整数 $n, m, x$,分别表示火车站的数量,火车轨道的数量以及小 A 初始的起点。\n\n接下来 $m$ 行,每行包含两个正整数 $l_i, r_i$,表示一条火车轨道运行的区间。\n## 输出格式\n输出一行,包含若干个用单个空格分隔的正整数,表示小 A 最后可能到达的车站,按照车站编号升序排序输出。\n## 样例\n### 样例 1\n输入:\n7 5 4\n3 4\n4 6\n1 3\n5 7\n4 6\n\n输出:\n1 3 6 7\n\n\n火车从车站 $4$ 出发,沿着第一条轨道可以运行到终点 $3$,也可以接着沿第三条轨道运行到终点 $1$。\n\n火车从车站 $4$ 出发,沿着第二条轨道可以运行到终点 $6$,也可以在车站 $5$ 换到第四条轨道运行到终点 $7$。\n\n所以最终按顺序输出 $1, 3, 6, 7$。\n\n## 数据范围与提示\n对于所有的数据,保证 $1 \\le n, m \\le 2 \\times 10^5$,$1 \\le x \\le n$,$1 \\le l_i < r_i \\le n$。",
"test": {
"input": "7 5 4\n3 4\n4 6\n1 3\n5 7\n4 6\n",
"output": "1 3 6 7\n"
}
},
{
"code_id": 0,
"code": "// {'input': '2\\n0 7 2 3\\n0 8 1 4\\n4 5 4 1\\n8 6 3 2\\n16 3 6 7\\n32 4 5 8\\n1 1 8 5\\n2 2 7 6', 'output': '0 12'} \n/*\nMLE 开大内存限制\n*/\n#include <cstdio>\n\n#include <algorithm>\n\n#include <cstring>\n\n\n\nconst int N = 75;\n\nconst int M = 9;\n\nconst int N3 = N * N * N;\n\n\n\nint n, m;\n\nint pos[M];\n\nint dpos[M][6][N];\n\nint a[N3];\n\nint d[N3][6];\n\nint minans = 2e9, maxans = -2e9;\n\n\n\ninline bool read(int &x) {\n\n\tchar ch;\n\n\t\n\n\tdo ch=getchar();\n\n\twhile(ch<'0' or ch>'9');\n\n\tx = 0;\n\n\twhile(ch>='0' and ch<='9') {\n\n\t\tx = (x << 3) + (x << 1) + (ch & 15);\n\n\t\tch = getchar();\n\n\t}\n\n\treturn ch != '\\n';\n\n}\n\n\n\n#define walk(u) for(i=0; i<6; i++) if(v = d[u][i])\n\nvoid bfs(int id) {\n\n\tstatic int q[N3], ql, qr;\n\n\tstatic int dep[N3];\n\n\tstatic bool mark[N3];\n\n\tint i, j, k, u, v, s;\n\n\t\n\n\tmemset(dep, 0, sizeof(dep));\n\n\tmemset(mark, 0, sizeof(mark));\n\n\t\n\n\ts = pos[id];\n\n\t\n\n\tdep[s] = 1;\n\n\tql = qr = 1;\n\n\tq[1] = s;\n\n\twhile(ql <= qr) {\n\n\t\tu = q[ql];\n\n\t\tql++;\n\n\t\t\n\n\t\twalk(u) {\n\n\t\t\tif(!dep[v]) {\n\n\t\t\t\tdep[v] = dep[u] + 1;\n\n\t\t\t\tqr++;\n\n\t\t\t\tq[qr] = v;\n\n\t\t\t}\n\n\t\t\telse if(dep[u] + 1 == dep[v]) \n\n\t\t\t\tmark[v] = true;\n\n\t\t}\n\n\t}\n\n\t\n\n\tmark[s] = true;\n\n\tfor(j=0; j<6; j++) if(u = d[s][j]) {\n\n\t\tk = 0;\n\n\t\twhile(true) {\n\n\t\t\tk++;\n\n\t\t\tdpos[id][j][k] = u;\n\n\t\t\tmark[u] = true;\n\n\t\t\twalk(u)\n\n\t\t\t\tif(!mark[v])\n\n\t\t\t\t\tbreak;\n\n\t\t\tif(i == 6)\n\n\t\t\t\tbreak;\n\n\t\t\t\n\n\t\t\tu = v;\n\n\t\t}\n\n\t}\n\n}\n\n#undef walk\n\n\n\nvoid dfs(int id, int tot) {\n\n\tstatic int cnt[N3];\n\n\tint u, v, i, j;\n\n\t\n\n\tif(id > m) {\n\n\t\tminans = std::min(minans, tot);\n\n\t\tmaxans = std::max(maxans, tot);\n\n\t\treturn;\n\n\t}\n\n\t\n\n\tu = pos[id];\n\n\tfor(i=0; i<6; i++) {\n\n\t\tif(d[u][i]) {\n\n\t\t\tfor(j=1; dpos[id][i][j]; j++) {\n\n\t\t\t\tv = dpos[id][i][j];\n\n\t\t\t\tif(!cnt[v])\n\n\t\t\t\t\ttot += a[v];\n\n\t\t\t\tcnt[v]++;\n\n\t\t\t}\n\n\t\t\tdfs(id + 1, tot);\n\n\t\t\tfor(j=1; dpos[id][i][j]; j++) {\n\n\t\t\t\tv = dpos[id][i][j];\n\n\t\t\t\tcnt[v]--;\n\n\t\t\t\tif(!cnt[v])\n\n\t\t\t\t\ttot -= a[v];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\n\n\nint main() {\n\n\tint i;\n\n\tint x, k;\n\n\t\n\n\tscanf(\"%d\", &n);\n\n\tfor(i=1; i<=n*n*n; i++) {\n\n\t\tscanf(\"%d\", &a[i]);\n\n\t\tif(!a[i]) {\n\n\t\t\tm++;\n\n\t\t\tpos[m] = i;\n\n\t\t}\n\n\t\tk = 0;\n\n\t\twhile(read(x)) {\n\n\t\t\td[i][k] = x;\n\n\t\t\tk++;\n\n\t\t}\n\n\t\td[i][k] = x;\n\n\t}\n\n\t\n\n\tfor(i=1; i<=m; i++)\n\n\t\tbfs(i);\n\n\t\n\n\tdfs(1, 0);\n\n\tprintf(\"%d %d\\n\", minans, maxans);\n\n\treturn 0;\n\n}",
"status": [
"MLE"
],
"details": [
"MLE: Testcase:0"
],
"tcb_id": "璀灿光华",
"query": "# 璀灿光华\n## 题目描述\n金先生有一个女朋友没名字。她勤劳勇敢、智慧善良。金先生很喜欢她。为此,金先生用 $a^3$ 块 $1 \\times 1 \\times 1$ 的独特的水晶制作了一个边长为 $a$ 的水晶立方体,他要将这个水晶立方体送给他见过最单纯善良的她。\r\n\r\n由于水晶立方体太太,不好运送,金先生还是将它拆开来送出。他相信拼好这个水晶立方难不倒聪明的她。\r\n\r\n没名字收到了礼物后果然不一会儿就根据说明将水晶立方体拼好了。没名字发现,有 $n$ 块水晶在漆黑安静的夜晚会随机以等概率向上下左右前后六个方向的一个发出光。被光照到的水晶显得格外好看。没名字给每一块不会发光的水晶定义了一个好看程度。水晶立方体在夜晚中的好看程度就是每块被光照到的水晶的好看程度之和。没名字想知道,水晶立方体在夜晚中的好看程度的最小值和最大值。\n## 输入格式\n第一行是 $a$,表示水晶立方体的边长。 \r\n接下来 $a^3$ 行,每行若干整数。 \r\n第一个数 $g_i$ 表示第 $i$ 块水晶的好看程度。如果 $g_i=0$,代表这块水晶会发光。接下来 $3\\sim 6$ 个整数,代表与这块水晶有共同面的水晶编号。\n## 输出格式\n两个整数,代表水晶立方体在夜晚好看程度的最小值与最大值。\n## 样例\n输入:\n2\n0 7 2 3\n0 8 1 4\n4 5 4 1\n8 6 3 2\n16 3 6 7\n32 4 5 8\n1 1 8 5\n2 2 7 6\n输出:\n0 12\n\n\n## 数据范围与提示\n对于所有数据,$1<a \\leq 70,\\ g_i<1000000,\\ n \\leq 8$。",
"test": {
"input": "2\n0 7 2 3\n0 8 1 4\n4 5 4 1\n8 6 3 2\n16 3 6 7\n32 4 5 8\n1 1 8 5\n2 2 7 6",
"output": "0 12"
}
},
{
"code_id": 0,
"code": "// {'input': '2 2 3 1 1 998244353\\n2 1\\n1 0', 'output': '16\\n18'} \n/*\n 读入有问题\n 无需修复\n*/\n#include <bits/stdc++.h>\n\nusing namespace std;\n\n#define LL long long\n\n\ninline int read() {\n\n\tchar c = getchar(); int x = 0, f = 1;\n\n\tfor (; !isdigit(c); c = getchar()) if (c == '-') f = -1;\n\n\tfor (; isdigit(c); c = getchar()) x = x * 10 + c - '0';\n\n\treturn x * f;\n\n}\n\n\n\nconst int MAXN = 1e8 + 5;\n\n\n\nint N, K, L, X, Y, Mod;\n\n\n\nnamespace Subtask1 {\n\n\n\n\tint inv[MAXN], ans[MAXN];\n\n\t\n\n\tinline void Add(int &x, int y) { x = (x + y) % Mod; }\n\n\n\n\tinline void Main() {\n\n\t\tint w = read();\n\n\t\tinv[0] = inv[1] = 1;\n\n\t\tfor (int i = 2; i <= L; i++) inv[i] = (LL)(Mod - Mod / i) * inv[Mod % i] % Mod;\n\n\t\tint now = L;\n\n\t\tfor (int i = 1; i <= L; i++) {\n\n\t\t\tAdd(ans[i % K], (LL)now * w % Mod);\n\n\t\t\tnow = (LL)now * (L - i) % Mod; now = (LL)now * inv[i + 1] % Mod;\n\n\t\t\tw = (LL)w * w % Mod;\n\n\t\t} \n\n\t\tAdd(ans[0], 1);\n\n\t\tfor (int i = 0; i < K; i++) printf(\"%d\\n\", ans[i]); \n\n\t}\t\n\n}\n\n\n\nint main() {\n\n\tN = read(); K = read(); L = read(); X = read(); Y = read(); Mod = read();\n\n\tif (N == 1) return Subtask1::Main(), 0;\n\n\treturn 0;\n\n}\n\n",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "白兔之舞",
"query": "# 白兔之舞\n## 题目描述\n有一张顶点数为 $(L+1)\\times n$ 的有向图。这张图的每个顶点由一个二元组 $(u,v)$ 表示 $(0\\le u\\le L,1\\le v\\le n)$。这张图不是简单图,对于任意两个顶点 $(u_1,v_1),(u_2,v_2)$,如果 $u_1<u_2$,则从 $(u_1,v_1)$ 到 $(u_2,v_2)$ 一共有 $w(v_1,v_2)$ 条不同的边,如果 $u_1\\ge u_2$ 则没有边。\r\n\r\n白兔将在这张图上上演一支舞曲。白兔初始时位于该有向图的顶点 $(0,x)$。\r\n\r\n白兔将会跳若干步。每一步,白兔会从当前顶点沿任意一条出边跳到下一个顶点。白兔可以在任意时候停止跳舞(也可以没有跳就直接结束)。当到达第一维为 $L$ 的顶点就不得不停止,因为该顶点没有出边。\r\n\r\n假设白兔停止时,跳了 $m$ 步,白兔会把这只舞曲给记录下来成为一个序列。序列的第 $i$ 个元素为它第 $i$ 步经过的边。\r\n\r\n问题来了:给定正整数 $k$ 和 $y\\ (1\\le y\\le n)$,对于每个 $t\\ (0\\le t<k)$,求有多少种舞曲(假设其长度为 $m$)满足 $m \\bmod k=t$,且白兔最后停在了坐标第二维为 $y$ 的顶点?\r\n\r\n两支舞曲不同定义为它们的长度($m$)不同或者存在某一步它们所走的边不同。\r\n\r\n输出的结果对 $p$ 取模。\n## 输入格式\n第一行六个用空格隔开的整数 $n,k,L,x,y,p$。\r\n\r\n接下来 $n$ 行,每行有 $n$ 个用空格隔开的整数,第 $i$ 行的第 $j$ 个数表示 $w(i,j)$。\n## 输出格式\n依次输出 $k$ 行,每行一个数表示答案对 $p$ 取模的结果。\n## 样例\n### 样例 1\n输入:\n2 2 3 1 1 998244353\n2 1\n1 0\n输出:\n16\n18\n\n$t=0$:\n1. 路径长度为 $0$,方案数为 $1$。\n2. 路径长度为 $2$,一共有六类路径:\n- $(0,1)\\to (1,1)\\to (2,1)$ 该路径有 $w(1,1)\\times w(1,1)=4$ 条;\n- $(0,1)\\to (1,1)\\to (3,1)$ 该路径有 $w(1,1)\\times w(1,1)=4$ 条;\n- $(0,1)\\to (2,1)\\to (3,1)$ 该路径有 $w(1,1)\\times w(1,1)=4$ 条;\n- $(0,1)\\to (1,2)\\to (2,1)$ 该路径有 $w(1,2)\\times w(2,1)=1$ 条;\n- $(0,1)\\to (1,2)\\to (3,1)$ 该路径有 $w(1,2)\\times w(2,1)=1$ 条;\n- $(0,1)\\to (2,2)\\to (3,1)$ 该路径有 $w(1,2)\\times w(2,1)=1$ 条;\n\n答案就为 $1+4+4+4+1+1+1=16$。\n\n$t=1$:\n1. 路径长度为 $1$,一共有三类路径:\n- $(0,1)\\to (1,1)$ 该路径有 $w(1,1)=2$ 条;\n- $(0,1)\\to (2,1)$ 该路径有 $w(1,1)=2$ 条;\n- $(0,1)\\to (3,1)$ 该路径有 $w(1,1)=2$ 条;\n2. 路径长度为 $3$,一共有三类路径:\n- $(0,1)\\to (1,1)\\to (2,1)\\to (3,1)$ 该路径有 $w(1,1)\\times w(1,1)\\times w(1,1)=8$ 条;\n- $(0,1)\\to (1,1)\\to (2,2)\\to (3,1)$ 该路径有 $w(1,1)\\times w(1,2)\\times w(2,1)=2$ 条;\n- $(0,1)\\to (1,2)\\to (2,1)\\to (3,1)$ 该路径有 $w(1,2)\\times w(2,1)\\times w(1,1)=2$ 条;\n\n答案就为 $2+2+2+8+2+2=18$。\n### 样例 2\n输入:\n3 4 100 1 3 998244353\n1 1 1\n1 1 1\n1 1 1\n输出:\n506551216\n528858062\n469849094\n818871911\n\n\n## 数据范围与提示\n对于全部数据,$p$ 为一个质数,$10^8<p<2^{30}$,$1\\le n\\le 3$,$1\\le x\\le n$,$1\\le y\\le n$,$0\\le w(i,j)<p$,$1\\le k\\le 65536$,$k$ 为 $p-1$ 的约数,$1\\le L\\le 10^8$。",
"test": {
"input": "2 2 3 1 1 998244353\n2 1\n1 0",
"output": "16\n18"
}
},
{
"code_id": 0,
"code": "// {'input': '10 10', 'output': '10009889889'} \n/*\n 无问题\n*/\n#include<bits/stdc++.h>\n#define int unsigned long long\n#define R register\n#define CN const\n#define rint R int\n#define cint CN int\n#define sib 1048576\nchar buf[sib],*p1,*p2;\n#define uc (p1==p2&&(p2=(p1=buf)+fread(buf,1,sib,stdin),p1==p2)?0:*p1++)\nchar pbuf[sib],*pp=pbuf;\ninline void ph(const char s) {\n\tif(pp-pbuf==sib)fwrite(pbuf,1,sib,stdout),pp=pbuf;\n\t*pp++=s;\n}\n//#define uc getchar()\n//#define ph putchar\n#define ps ph(' ')\n#define pe ph('\\n')\nusing namespace std;\ncint inf=(1ll<<63)-1;\ncint mix=2e7+5;\ninline int in();\ninline void out(rint x);\nint n=in(),m=in(),pct,lim=mix-5;\nint phi[mix],prm[mix>>3];\nunordered_map<int,int> mpphi;\ninline int ksm(rint x,rint y){\n\trint rt=1;\n\twhile(y){\n\t\tif(y&1)rt*=x;\n\t\tx*=x,y>>=1;\n\t}\treturn rt;\n}\ninline int ansphi(rint x){\n\tif(x<=lim)return phi[x];\n\tif(mpphi.count((int)x))return mpphi[(int)x];\n\trint rt=(x*(x+1))>>1;\n\tfor(rint l=1,r,c;l<x;l=r)\n\tr=(x/(c=x/(l+1))),rt-=ansphi(c)*(r-l);\n\treturn mpphi[(int)x]=rt;\n}\ninline int solve(){\n\trint rt=ksm(m,n);\n\tfor(rint l=1,r,c;(c=l+1)<=m;l=r)\n\tr=(m/(c=m/(l+1))),rt+=ksm(c,n)*(ansphi(r)-ansphi(l));\n\treturn rt;\n}\n#undef int\nint main() {\n#define int unsigned long long\n\tlim=min(lim,m),phi[1]=1;\n\tfor(rint i=2,j,k;i<=lim;++i){\n\t\tif(!phi[i])phi[prm[++pct]=i]=i-1;\n\t\tfor(j=1;j<=pct&&(k=i*prm[j])<=lim;++j)\n\t\tif(i%prm[j])phi[k]=phi[i]*(prm[j]-1);\n\t\telse {\n\t\t\tphi[k]=phi[i]*prm[j];\n\t\t\tbreak;\n\t\t}\tphi[i]+=phi[i-1];\n\t}\tout(solve()&inf),pe;\n\tfwrite(pbuf,1,pp-pbuf,stdout);\n\treturn n;\n}\ninline int in() {\n\trint x=0;\n\tR bool f=0;\n\tR char s=uc;\n\twhile((s<'0'||'9'<s)&&s!='-')s=uc;\n//\tif(s=='-')f=1,s=uc;\n\twhile('0'<=s&&s<='9')(x*=10)+=s^48,s=uc;\n\treturn f?-x:x;\n}\ninline void out(rint x) {\n//\tif(x<0)ph('-'),x=-x;\n\trint y=x/10;\n\tif(y)out(y);\n\tph((x-y*10)^48);\n}",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "简单的最大公约数",
"query": "简单的最大公约数\n题目描述\n给定 $n,m$,求:\r\n\r\n$$\r\n\\sum_{i_1=1}^{m}\\sum_{i_2=1}^{m} \\dots \\sum_{i_n=1}^{m}\\gcd(i_1,i_2,i_3, \\dots i_n)\r\n$$\r\n\r\n答案对 $2^{64}$ 取模。\n输入格式\n一行两个整数 $n,m$。\n输出格式\n一行一个整数表示答案。\n样例\n输入:\n10 10\n输出:\n10009889889\n\n\n数据范围与提示\n$1 \\le n, m \\le 10^{11}$",
"test": {
"input": "10 10",
"output": "10009889889"
}
},
{
"code_id": 0,
"code": "// {'input': '5 3 15\\n1 5\\n2 5\\n3 5\\n4 5\\n5 5\\n1 5\\n2 4\\n3 3', 'output': '10'} \n/*\n已解决\n*/\n#include <cstdio>\n\n#include <cstring>\n\n#include <queue>\n\n#include <iostream>\n\n#include <vector>\n\n#include <cmath>\n\n#include <ctime>\n\n#include <algorithm>\n\n#include <stack>\n\n#define maxn 200005\n\n#define mid ((L+R)>>1)\n\nusing namespace std;\n\ntypedef long long ll;\n\ntemplate<typename t>inline void fcin(t &x){\n\n\tint sign=1; x=0; char op=getchar();\n\n\twhile(op<'0'||op>'9'){if(op=='-') sign=-1;op=getchar();}\n\n\twhile(op>='0'&&op<='9'){x=x*10+(op-48);op=getchar();}\n\n\tx*=sign;\n\n}\n\nint w[maxn],v[maxn];\n\nll S;int n,m;\n\nint askl[maxn],askr[maxn];\n\nll sum[maxn];int sumcnt[maxn];\n\nll check(int k){\n\n\tmemset(sum,0,sizeof(sum));\n\n\tmemset(sumcnt,0,sizeof(sumcnt));\n\n\tfor(int i=1;i<=n;i++){\n\n\t\tif(w[i]>=k){\n\n\t\t\tsum[i]=sum[i-1]+v[i];\n\n\t\t\tsumcnt[i]=sumcnt[i-1]+1;\n\n\t\t}else{\n\n\t\t\tsum[i]=sum[i-1];\n\n\t\t\tsumcnt[i]=sumcnt[i-1];\n\n\t\t}\n\n\t}\n\n\tll ans=0;\n\n\tfor(int i=1;i<=m;i++)\n\n\t\tans+=(sum[askr[i]]-sum[askl[i]-1])*(sumcnt[askr[i]]-sumcnt[askl[i]-1]);\n\n\treturn ans;\n\n}\n\nint main(){\n\n\tfcin(n);fcin(m);fcin(S);\n\n\tint L=1<<30,R=0;\n\n\tfor(int i=1;i<=n;i++){\n\n\t\tfcin(w[i]),fcin(v[i]);\n\n\t\tL=min(L,w[i]);R=max(R,w[i]);\n\n\t}\n\n\tfor(int i=1;i<=m;i++){\n\n\t\tfcin(askl[i]);\n\n\t\tfcin(askr[i]);\n\n\t}\n\n\twhile(L<R){\n\n\t\tif(check(mid)>S) L=mid+1;\n\n\t\telse R=mid;\n\n\t}\n\n\tprintf(\"%lld\",abs(check(L)-S));\n\n\treturn 0;\n\n}\n\n",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "聪明的质监员",
"query": "# 聪明的质监员\n## 题目描述\n小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 $n$ 个矿石,从 $1$ 到 $n$ 逐一编号,每个矿石都有自己的重量 $w_i$ 以及价值 $v_i$ 。检验矿产的流程是:\r\n\r\n1. 给定 $m$ 个区间 $[L_i,R_i]$ ;\r\n2. 选出一个参数 $W$ ;\r\n3. 对于一个区间 $[L_i,R_i]$ ,计算矿石在这个区间上的检验值 $Y_i$:\r\n\r\n$$Y_i=\\sum_j1 \\cdot \\sum_j{v_j},\\ j\\in[L_i,R_i],w_j\\geq W$$\r\n\r\n其中 $j$ 是矿石编号\r\n\r\n这批矿产的检验结果 Y 为各个区间的检验值之和,即 $Y=\\sum_{i=1}^m{Y_i}$。\r\n\r\n若这批矿产的检验结果与所给标准值 $S$ 相差太多,就需要再去检验另一批矿产。\r\n\r\n小 T 不想费时间去检验另一批矿产,所以他想通过调整参数 $W$ 的值,让检验结果尽可能的靠近标准值 $S$,即使得 $|S-Y|$ 最小。请你帮忙求出这个最小值。\n## 输入格式\n输入第一行包含三个整数 $n,m,S$ ,分别表示矿石的个数、区间的个数和标准值;\r\n\r\n接下来的 $n$ 行,每行 $2$ 个整数,中间用空格隔开,第 $i+1$ 行表示 $i$ 号矿石的重量 $w_i$ 和价值 $v_i$ ;\r\n\r\n接下来的 $m$ 行,表示区间,每行 $2$ 个整数,中间用空格隔开,第 $i+n+1$ 行表示区间 $[L_i,R_i]$ 的两个端点 $L_i$ 和 $R_i$ 。\r\n\r\n注意:不同区间可能重合或相互重叠。\n## 输出格式\n输出只有一行,包含一个整数,表示所求的最小值。\n## 样例\n输入:\n5 3 15\n1 5\n2 5\n3 5\n4 5\n5 5\n1 5\n2 4\n3 3\n输出:\n10\n\n当 $W$ 选 $4$ 的时候,三个区间上检验值分别为 $20$ 、 $5$ 、 $0$ ,这批矿产的检验结果为 $25$ ,此时与标准值 $S$ 相差最小为 $10$ 。\n## 数据范围与提示\n对于$100\\%$ 的数据,有 $1\\leq n,m\\leq 200,000$,$0 < w_i, v_i\\leq 10^6$,$0 < S\\leq 10^{12}$,$1\\leq L_i \\leq R_i \\leq n$ 。",
"test": {
"input": "5 3 15\n1 5\n2 5\n3 5\n4 5\n5 5\n1 5\n2 4\n3 3",
"output": "10"
}
},
{
"code_id": 1,
"code": "// {'input': '5 3 15\\n1 5\\n2 5\\n3 5\\n4 5\\n5 5\\n1 5\\n2 4\\n3 3', 'output': '10'} \n/*\n已解决\n*/\n\n#include <ctime>\n\n#include <cmath>\n\n#include <cstdio>\n\n#include <cstring>\n\n#include <cstdlib>\n\n#include <iostream>\n\n#include <algorithm>\n\n#include <vector>\n\n#include <queue>\n\n#define inf 200010\n\n#define INF 0x7fffffff\n\n#define ll long long\n\n#ifndef ONLINE_JUDGE\n\n#define register\n\n#endif\n\n\n\nnamespace io {\n\n const int SIZE = (1 << 21) + 1;\n\n char ibuf[SIZE], *iS, *iT, obuf[SIZE], *oS = obuf, *oT = oS + SIZE - 1, c, qu[55]; int f, qr;\n\n \n\n #define gc() (iS == iT ? (iT = (iS = ibuf) + fread (ibuf, 1, SIZE, stdin), (iS == iT ? EOF : *iS ++)) : *iS ++)\n\n \n\n inline void flush () {\n\n fwrite (obuf, 1, oS - obuf, stdout);\n\n oS = obuf;\n\n }\n\n \n\n inline void putc (char x) {\n\n *oS ++ = x;\n\n if (oS == oT) flush ();\n\n }\n\n\n\n template <class I>\n\n inline void read(I &num){\n\n num = 0; char c = gc(), up = c;\n\n while(c < '0' || c > '9') up = c, c = gc();\n\n while(c >= '0' && c <= '9') num = (num << 1) + (num << 3) + (c ^ '0'), c = gc();\n\n up == '-' ? num = -num : 0; return;\n\n }\n\n \n\n template <class I>\n\n inline void print (I x) {\n\n if (!x) putc ('0'); \n\n if (x < 0) putc ('-'), x = -x;\n\n while (x) qu[++ qr] = x % 10 + '0', x /= 10;\n\n while (qr) putc (qu[qr --]);\n\n }\n\n \n\n struct Flusher_ {~Flusher_(){flush();}}io_flusher_;\n\n}\n\nusing io :: read; using io :: putc; using io :: print;\n\ntemplate <class I>\n\ninline void read(I &a, I &b) {read(a); read(b);}\n\ntemplate <class I>\n\ninline void read(I &a, I &b, I &c) {read(a); read(b); read(c);}\n\n\n\nint n, m;\n\nll S, Y;\n\nint w[inf], v[inf];\n\nint ql[inf], qr[inf];\n\nll sum[inf];\n\nint tot[inf];\n\n// /*\n\ninline int max(const int &a, const int &b) {return a > b ? a : b;}\n\ninline int min(const int &a, const int &b) {return a < b ? a : b;}\n\ninline ll min(const ll &a, const ll &b) {return a < b ? a : b;}\n\ninline ll abs_func(const ll &a) {return a > 0 ? a : -a;}\n\n// */\n\n// using std::min; using std::max; using std::abs;\n\ninline bool check(const int &W) {\n\n std::fill(tot + 1, tot + 1 + n, 0);\n\n std::fill(sum + 1, sum + 1 + n, 0);\n\n for(register int i = 1; i <= n; i++) {\n\n if(w[i] >= W) tot[i] = tot[i - 1] + 1, sum[i] = sum[i - 1] + v[i];\n\n else tot[i] = tot[i - 1], sum[i] = sum[i - 1];\n\n }\n\n Y = 0;\n\n for(register int i = 1; i <= m; i++) {\n\n Y += (tot[qr[i]] - tot[ql[i] - 1]) * (sum[qr[i]] - sum[ql[i] - 1]);\n\n }\n\n return Y > S;\n\n}\n\n\n\nsigned main () {\n\n read(n, m); read(S);\n\n register int l = INF, r = -INF;\n\n for(register int i = 1; i <= n; i++) {\n\n read(w[i], v[i]);\n\n l = min (l, w[i]);\n\n r = max (r, w[i]);\n\n }\n\n for(register int i = 1; i <= m; i++) read(ql[i], qr[i]);\n\n register int mid;\n\n while(l + 1 < r) {\n\n mid = (l + r) >> 1;\n\n if(check(mid)) l = mid;\n\n else r = mid;\n\n }\n\n check(l); register int tmp1 = abs_func(Y - S);\n\n check(r); register int tmp2 = abs_func(Y - S);\n\n printf(\"%lld\\n\", min(tmp1, tmp2));\n\n return 0;\n\n}",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "聪明的质监员",
"query": "# 聪明的质监员\n## 题目描述\n小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 $n$ 个矿石,从 $1$ 到 $n$ 逐一编号,每个矿石都有自己的重量 $w_i$ 以及价值 $v_i$ 。检验矿产的流程是:\r\n\r\n1. 给定 $m$ 个区间 $[L_i,R_i]$ ;\r\n2. 选出一个参数 $W$ ;\r\n3. 对于一个区间 $[L_i,R_i]$ ,计算矿石在这个区间上的检验值 $Y_i$:\r\n\r\n$$Y_i=\\sum_j1 \\cdot \\sum_j{v_j},\\ j\\in[L_i,R_i],w_j\\geq W$$\r\n\r\n其中 $j$ 是矿石编号\r\n\r\n这批矿产的检验结果 Y 为各个区间的检验值之和,即 $Y=\\sum_{i=1}^m{Y_i}$。\r\n\r\n若这批矿产的检验结果与所给标准值 $S$ 相差太多,就需要再去检验另一批矿产。\r\n\r\n小 T 不想费时间去检验另一批矿产,所以他想通过调整参数 $W$ 的值,让检验结果尽可能的靠近标准值 $S$,即使得 $|S-Y|$ 最小。请你帮忙求出这个最小值。\n## 输入格式\n输入第一行包含三个整数 $n,m,S$ ,分别表示矿石的个数、区间的个数和标准值;\r\n\r\n接下来的 $n$ 行,每行 $2$ 个整数,中间用空格隔开,第 $i+1$ 行表示 $i$ 号矿石的重量 $w_i$ 和价值 $v_i$ ;\r\n\r\n接下来的 $m$ 行,表示区间,每行 $2$ 个整数,中间用空格隔开,第 $i+n+1$ 行表示区间 $[L_i,R_i]$ 的两个端点 $L_i$ 和 $R_i$ 。\r\n\r\n注意:不同区间可能重合或相互重叠。\n## 输出格式\n输出只有一行,包含一个整数,表示所求的最小值。\n## 样例\n输入:\n5 3 15\n1 5\n2 5\n3 5\n4 5\n5 5\n1 5\n2 4\n3 3\n输出:\n10\n\n当 $W$ 选 $4$ 的时候,三个区间上检验值分别为 $20$ 、 $5$ 、 $0$ ,这批矿产的检验结果为 $25$ ,此时与标准值 $S$ 相差最小为 $10$ 。\n## 数据范围与提示\n对于$100\\%$ 的数据,有 $1\\leq n,m\\leq 200,000$,$0 < w_i, v_i\\leq 10^6$,$0 < S\\leq 10^{12}$,$1\\leq L_i \\leq R_i \\leq n$ 。",
"test": {
"input": "5 3 15\n1 5\n2 5\n3 5\n4 5\n5 5\n1 5\n2 4\n3 3",
"output": "10"
}
},
{
"code_id": 0,
"code": "// {'input': '4 2\\n1\\n1\\n2\\n2', 'output': '12\\n2'} \n/*\n\t已解决\n*/\n#include <bits/stdc++.h>\n\nusing namespace std;\n\n#define il inline\n\n#define elif else if\n\n\n\n// Type\n\n#define ld double\n\n#define ll long long\n\n#define ull unsigned ll\n\n\n\n// Vector\n\n#define vc vector\n\n#define Pb push_back\n\n#define Pf push_front\n\n#define Eb emplace_back\n\n#define All(x) x.begin(),x.end()\n\n\n\n// Memory\n\n#define Ms(_data) memset(_data,0,sizeof(_data))\n\n#define Msn(_data,_num) memset(_data,_num,sizeof(_data))\n\n\n\n// Template\n\n#define _cl class\n\n#define _tp template\n\n#define _tyn typename\n\n\n\n// Pair\n\n#define Mp make_pair\n\n#define F first\n\n#define S second\n\n#define pii pair<int,int>\n\n#define pli pair<ll,int>\n\n#define pil pair<int,ll>\n\n#define pll pair<ll,ll>\n\n\n\n// Loop\n\n#define For(i,j) for( int (i) = 1 ; (i) <= (j) ; ++(i) )\n\n#define For0(i,j) for( int (i) = 0 ; (i) < (j) ; ++(i) )\n\n#define Forx(i,j,k) for( int (i) = (j) ; (i) <= (k) ; ++(i) )\n\n#define Forstep(i,j,k,st) for( int (i) = (j) ; (i) <= (k) ; (i) += (st) )\n\n#define fOR(i,j) for( int (i) = (j) ; (i) >= 1 ; --(i) )\n\n#define fOR0(i,j) for( int (i) = (j)-1 ; (i) >= 0 ; --(i) )\n\n#define fORx(i,j,k) for( int (i) = (k) ; (i) >= (j) ; --(i) )\n\n\n\n// Read\n\nstruct InputReader{\n\n\t#define bs 1000001\n\n\tchar buf[bs]; int p;\n\n\til InputReader(){ p = bs; }\n\n\til void Flush(){ p = 0; fread(buf,1,bs,stdin); }\n\n\til char C(){ if(p >= bs) Flush(); return buf[p++]; }\n\n\til char Readnum(){ char ch = C(); while( !isdigit(ch) && ch != '-' ) ch = C(); return ch; }\n\n\til void Readalpha( char &c ){ c = C(); while( !isalpha(c) ) c = C(); }\n\n\tint operator() (){\n\n\t\tint ans = 0, fu = 1; char ch = Readnum();\n\n\t\tif( ch == '-' ) fu = -1, ch = C();\n\n\t\twhile( ch >= '0' && ch <= '9' ){\n\n\t\t\tans = ans*10 + ch-'0';\n\n\t\t\tch = C();\n\n\t\t}\n\n\t\treturn ans * fu;\n\n\t}\n\n\tll Readll(){\n\n\t\tll ans = 0LL, fu = 1LL; char ch = Readnum();\n\n\t\tif( ch == '-' ) fu = -1LL, ch = C();\n\n\t\twhile( ch >= '0' && ch <= '9' ){\n\n\t\t\tans = ans*10LL + ch-'0';\n\n\t\t\tch = C();\n\n\t\t}\n\n\t\treturn ans * fu;\n\n\t}\n\n\til void Readstring( string &x ){\n\n\t\tx.clear(); char ch = C();\n\n\t\twhile( !isdigit(ch) && !isalpha(ch) && ch != '#' && ch != '.' ) ch = C();\n\n\t\twhile( isdigit(ch) || isalpha(ch) || ch == '#' || ch == '.' ){\n\n\t\t\tx += ch;\n\n\t\t\tch = C();\n\n\t\t}\n\n\t}\n\n\til void Readchstring( char s[] ){\n\n\t\tint len = 0; char ch = C();\n\n\t\twhile( !isdigit(ch) && !isalpha(ch) /*&& ch != '*' && ch != '?'*/ ) ch = C();\n\n\t\twhile( isdigit(ch) || isalpha(ch) /*|| ch == '*' || ch == '?'*/ ){\n\n\t\t\ts[len++] = ch;\n\n\t\t\tch = C();\n\n\t\t}\n\n\t\ts[len] = '\\0';\n\n\t}\n\n\til void Specialread( char &c ){\n\n\t\tc = C();\n\n\t\twhile( !isdigit(c) && !isalpha(c) && c != '#' && c != '.' && c != '=' && c != 'B' ) c = C();\n\n\t}\n\n\t#undef bs\n\n}In;\n\nil void Read( int &x ){ x = In(); }\n\nil void Read( int &x, int &y ){ x = In(); y = In(); }\n\nil void Read( int &x1 , int &x2 , int &x3 ){ x1 = In(); x2 = In(); x3 = In(); }\n\nil void Read( int &x1 , int &x2 , int &x3 , int &x4 ){ x1 = In(); x2 = In(); x3 = In(); x4 = In(); }\n\nil void Read( ll &x ){ x = In.Readll(); }\n\nil void Read( ll &x, ll &y ){ x = In.Readll(); y = In.Readll(); }\n\nil void Read( ll &x1 , ll &x2 , ll &x3 ){ x1 = In.Readll(); x2 = In.Readll(); x3 = In.Readll(); }\n\nil void Read( ll &x1 , ll &x2 , ll &x3 , ll &x4 ){ x1 = In.Readll(); x2 = In.Readll(); x3 = In.Readll(); x4 = In.Readll(); }\n\n_tp<_tyn T> void Read( T a[] , int st , int ed ){ Forx(i,st,ed) Read(a[i]); }\n\n#define iRead(k) int k; Read(k);\n\n#define iRead2(a,b) iRead(a); iRead(b);\n\n#define iRead3(a,b,c) iRead2(a,b); iRead(c);\n\n#define iRead4(a,b,c,d) iRead2(a,b); iRead2(c,d);\n\n#define lRead(k) ll k; Read(k);\n\n#define lRead2(a,b) lRead(a); lRead(b);\n\n#define lRead3(a,b,c) lRead2(a,b); lRead(c);\n\n#define lRead4(a,b,c,d) lRead2(a,b); lRead2(c,d);\n\n\n\n\n_tp<_tyn T>void Print( T a[] , int s , int t , char sp = ' ' , char ed = '\\n' ){\n\n\tif( s > t ) return;\n\n\tfor( int i = s ; i < t ; i++ )\n\n\t\tcout << a[i] << sp;\n\n\tcout << a[t] << ed;\n\n\tcout.flush();\n\n}\n\n_tp<_tyn T>void Print( T a , int s = 0 , int t = -1 , char sp = ' ' , char ed = '\\n' ){\n\n\tif( t == -1 ) t = a.size()-1;\n\n\tfor( int i = s ; i <= t ; i++ )\n\n\t\tcout << a[i] << sp;\n\n\tcout << ed;\n\n\tcout.flush();\n\n}\n\n\n\n// Optimize\n\n#define max(a,b) ((a)>(b)?(a):(b))\n\n#define min(a,b) ((a)<(b)?(a):(b))\n\n#define Mymax(a,b) (a) = max((a),(b))\n\n#define Mymin(a,b) (a) = min((a),(b))\n\n#define INF (0x3f3f3f3f)\n\n#define LINF ((long long)(0x3f3f3f3f3f3f3f3f))\n\n\n\n///////////////////////////////////////////////////////////////////////////////////////\n\n///////////////////////////////////////////////////////////////////////////////////////\n\n#define MAXN 131072\n\n\n\nint n,k;\n\nll w[MAXN];\n\n\n\nnamespace SameWi{\n\n\tint depcnt[MAXN];\n\n\tvoid Solve(){\n\n\t\tint leafcnt = 1;\n\n\t\tdepcnt[1] = 1;\n\n\t\tll nowmxleaf = 1;\n\n\t\tFor(i,19){\n\n\t\t\tnowmxleaf *= k;\n\n\t\t\twhile(1){\n\n\t\t\t\tif( depcnt[i]%k == 0 ){\n\n\t\t\t\t\t--depcnt[i-1];\n\n\t\t\t\t\t--leafcnt;\n\n\t\t\t\t}\n\n\t\t\t\t++depcnt[i];\n\n\t\t\t\t++leafcnt;\n\n\t\t\t\tif( leafcnt == n ) break;\n\n\t\t\t\tif( depcnt[i] == nowmxleaf ) break;\n\n\t\t\t}\n\n\t\t\tif( leafcnt == n ) break;\n\n\t\t}\n\n\n\n\t\tll ans = 0;\n\n\t\tint mxdep = 0;\n\n\t\tFor0(i,20){\n\n\t\t\tif(depcnt[i]) Mymax(mxdep,i);\n\n\t\t\tans += 1LL*depcnt[i]*i*w[1];\n\n\t\t}\n\n\t\tcout << ans << endl << mxdep << endl;\n\n\n\t}\n\n}\n\n\n\nint main(){\n\n\n\tRead(n,k);\n\n\tFor(i,n) Read(w[i]);\n\n\tif(all_of(w+1,w+1+n,[=]( ll x ){ return x == w[1]; })){\n\n\t\tSameWi::Solve();\n\t}\n\n\n\treturn 0;\n}\n\n",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "荷马史诗",
"query": "# 荷马史诗\n## 题目描述\n> 追逐影子的人,自己就是影子。 ——荷马\r\n\r\nAllison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编码方式使得它变得短一些。\r\n\r\n一部《荷马史诗》中有 $n$ 种不同的单词,从 $1$ 到 $n$ 进行编号。其中第 $i$ 种单词出现的总次数为 $w_i$。Allison 想要用 $k$ 进制串 $s_i$ 来替换第 $i$ 种单词,使得其满足如下要求:\r\n对于任意的 $1 \\leq i,j \\leq n, \\ i \\neq j$,都有:$s_i$ 不是 $s_j$ 的前缀。\r\n\r\n现在 Allison 想要知道,如何选择 $s_i$,才能使替换以后得到的新的《荷马史诗》长度最小。在确保总长度最小的情况下,Allison 还想知道最长的 $s_i$ 的最短长度是多少?\r\n\r\n一些定义:\r\n\r\n一个字符串被称为 $k$ 进制字符串,当且仅当它的每个字符是 $0$ 到 $k?1$ 之间(包括 $0$ 和 $k?1$)的整数。\r\n\r\n字符串 $\\text{Str}_1$ 被称为字符串 $\\text{Str}_2$ 的前缀,当且仅当:存在 $1 \\leq t \\leq m$,使得 $\\text{Str}_1=\\text{Str}_2[1 \\ldots t]$。其中,$m$ 是字符串 $\\text{Str}_2$ 的长度,$\\text{Str}_2[1 \\ldots t]$ 表示 $\\text{Str}_2$ 的前 $t$ 个字符组成的字符串。\n## 输入格式\n输入文件的第一行包含两个正整数 $n,k$,中间用单个空格隔开,表示共有 $n$ 种单词,需要使用 $k$ 进制字符串进行替换。\r\n\r\n接下来 $n$ 行,第 $i+1$ 行包含 $1$ 个非负整数 $w_i$,表示第 $i$ 种单词的出现次数。\n## 输出格式\n输出文件包括两行。\r\n\r\n第一行输出一个整数,为《荷马史诗》经过重新编码以后的最短长度。\r\n\r\n第二行输出一个整数,为保证最短总长度的情况下,最长字符串 $s_i$ 的最短长度。\n## 样例\n### 样例 1\n输入:\n4 2\n1\n1\n2\n2\n输出:\n12\n2\n\n用 $X_{(k)}$ 表示 $X$ 是以 $k$ 进制表示的字符串。\n\n一种最优方案:令 $00_{(2)}$ 替换第一种单词,$01_{(2)}$ 替换第二种单词,$10_{(2)}$ 替换第三种单词,$11_{(2)}$ 替换第四种单词。在这种方案下,编码以后的最短长度为:$1 \\times 2+1 \\times 2+2 \\times 2+2 \\times 2=12$,最长字符串 $s_i$ 的长度为 $2$。\n\n一种非最优方案:令 $000_{(2)}$ 替换第一种单词,$001_{(2)}$ 替换第二种单词,$01_{(2)}$ 替换第三种单词,$1_{(2)}$ 替换第四种单词。在这种方案下,编码以后的最短长度为:$1 \\times 3+1 \\times 3+2 \\times 2+2 \\times 1=12$,最长字符串 $s_i$ 的长度为 $3$。与最优方案相比,文章的长度相同,但是最长字符串的长度更长一些。\n### 样例 2\n输入:\n6 3\n1\n1\n3\n3\n9\n9\n输出:\n36\n3\n\n一种最优方案:令 $000_{(3)}$ 替换第 $1$ 种单词,$001_{(3)}$ 替换第 $2$ 种单词,$01_{(3)}$ 替换第 $3$ 种单词,$02_{(3)}$ 替换第 $4$ 种单词,$1_{(3)}$ 替换第 $5$ 种单词,$2_{(3)}$ 替换第 $6$ 种单词。\n## 数据范围与提示\n对于所有数据,保证 $2 \\leq n \\leq 100000, \\ 2 \\leq k \\leq 9, \\ 0 \\lt w_i \\leq 10^{11}$。选手请注意使用 $64$ 位整数进行输入输出、存储和计算。\r\n\r\n#### 评分方式\r\n对于每个测试点: \r\n若输出文件的第 $1$ 行正确,得到该测试点 $40\\%$ 的分数; \r\n若输出文件完全正确,得到该测试点 $100\\%$ 的分数。",
"test": {
"input": "4 2\n1\n1\n2\n2",
"output": "12\n2"
}
},
{
"code_id": 0,
"code": "// {'input': '2 10\\n1\\n-2\\n1', 'output': '1\\n1'} \n/*\n无问题\n*/\n#include<bits/stdc++.h>\n\n#define gc getchar\n\nusing namespace std;\n\nconst int inf2=19260187;\n\nconst int inf1=99991;\n\nconst int inf3=1282349;\n\nconst int inf4=1000000009;\n\nbool t=true;\n\nint n,m,ans,tot,sum;\n\nlong long int sum1,sum2,sum3,sum4;\n\nint a[1000005],num[1000005];\n\ninline int read(){\n\n char ch;\n\n int fh=1;\n\n scanf(\"%c\",&ch);\n\n while (ch<'0'||ch>'9'){\n\n if (ch=='-') fh=-1;\n\n scanf(\"%c\",&ch);\n\n }\n\n int num=0;\n\n while (ch>='0'&&ch<='9'){\n\n num=num*10+ch-'0';\n\n num%=inf1;\n\n scanf(\"%c\",&ch);\n\n }\n\n num*=fh;\n\n return num;\n\n}\n\nint judge(long long int x){\n\n\tsum1=0;\n\n\tsum2=0;\n\n\tsum3=0;\n\n\tsum4=0; \n\n for(long long int i=n;i>=1;i--){\n\n sum1=((a[i]+sum1)*x)%inf1;\n\n sum2=((a[i]+sum2)*x)%inf2;\n\n sum3=((a[i]+sum3)*x)%inf3;\n\n sum4=((a[i]+sum4)*x)%inf4;\n\n }\n\n sum1=(sum1+a[0])%inf1;\n\n sum2=(sum2+a[0])%inf2;\n\n sum3=(sum3+a[0])%inf3;\n\n sum4=(sum4+a[0])%inf4;\n\n if(sum1==0) return 0;\n\n if(sum2==0) return 0;\n\n if(sum3==0) return 0;\n\n if(sum4==0) return 0;\n\n return 1;\n\n}\n\nint main(){\n\n\tn=read();\n\n\tm=read();\n\n\tfor(int i=0;i<=n;i++){\n\n\t\ta[i]=read();\n\n\t}\n\n\tfor(int i=1;i<=m;i++){\n\n\t\tif(judge(i)==0){\n\n\t\t\tt=false;\n\n\t\t\tans++;\n\n\t\t\tnum[++tot]=i;\n\n\t\t} \n\n\t}\n\n\tif(t){\n\n\t\tcout<<\"0\"<<endl;\n\n\t\treturn 0;\n\n\t}\n\n\tcout<<ans<<endl;\n\n\tfor(int i=1;i<=tot;i++){\n\n\t\tcout<<num[i]<<endl;\n\n\t}\n\n\treturn 0;\n\n}",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "解方程",
"query": "# 解方程\n## 题目描述\n已知多项式方程:\r\n\r\n$$a_0+a_1x+a_2x^2+\\cdots+a_nx^n=0$$\r\n\r\n求这个方程在 $[1,m]$ 内的整数解($n$ 和 $m$ 均为正整数)。\n## 输入格式\n输入共 $n + 2$ 行。 \r\n第一行包含 $2$ 个整数 $n, m$,每两个整数之间用一个空格隔开。 \r\n接下来的 $n+1$ 行每行包含一个整数,依次为 $a_0,a_1,a_2\\ldots a_n$。\n## 输出格式\n第一行输出方程在 $[1,m]$ 内的整数解的个数。\r\n\r\n接下来每行一个整数,按照从小到大的顺序依次输出方程在 $[1,m]$ 内的一个整数解。\n## 样例\n### 样例 1\n输入:\n2 10\n1\n-2\n1\n输出:\n1\n1\n\n\n### 样例 2\n输入:\n2 10\n2\n-3\n1\n输出:\n2\n1\n2\n\n\n### 样例 3\n输入:\n2 10\n1\n3\n2\n输出:\n0\n\n\n## 数据范围与提示\n对于 $100\\%$ 的数据:$0<n\\le 100,|a_i|\\le 10^{10000},a_n≠0,m<10^6$。",
"test": {
"input": "2 10\n1\n-2\n1",
"output": "1\n1"
}
},
{
"code_id": 0,
"code": "// {'input': '3\\n5 5\\n10 7\\n1145 14', 'output': '32\\n968\\n763'} \n/*\n执行问题\n*/\n#include <bits/stdc++.h>\n#define ll long long\n#define rep(u, i, e) for (int i = head[u]; ~i; i = e[i].next)\n#define pb push_back\n\n#define umap unerdered_map\n#define uset unerdered_set\n#define vi vector\n#define all(x) x.begin(), x.end()\n\nusing namespace std;\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-快读与快输-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\ninline ll IO() {\n long long x = 0;\n int f = 0, c = getchar();\n for (; !isdigit(c) && c != -1; c = getchar()) {\n if (c == '-') f = 1;\n }\n if (c == -1) exit(0);\n for (; isdigit(c); c = getchar()) {\n x = (x << 1) + (x << 3) + (c ^ '0');\n }\n return f ? -x : x;\n}\nvoid getstr(string &s) {\n int c = getchar();\n while (c < 33 && c != -1) c = getchar();\n if (c == -1) exit(0);\n for(;c > 32; c = getchar()) s.pb(c);\n}\nvoid print(ll x) {\n if (x < 0) putchar('-'), x = -x;\n if (x > 9) print(x / 10);\n putchar(x % 10 + '0');\n}\nvoid print(const string& s) { for (char c : s) putchar(c); }\ntemplate <typename T>\nvoid print(T x, char c) { print(x); putchar(c); }\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-快读与快输-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-不可修改区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\n// gcd\ntemplate <typename T>\nT gcd(T a, T b, T m = 0) { while (b) m = a % b, a = b, b = m; return a; }\n// 快速幂\nll powf(ll a, ll b, ll mod, ll res = 1) {\n a %= mod;\n while (b) {\n if (b & 1) res = res * a % mod;\n a = a * a % mod, b >>= 1;\n }\n return res;\n}\n// 数组读入\ntemplate <typename T>\ninline void fill_w(T *a, int cnt) { for (int i = 0; i < cnt; ++i) read(a[i]);}\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-不可修改区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-可修改区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\n/*↓可修改区*/\n// 自定义结构体\nstruct pii {\n int x, y;\n bool operator< (const pii& j) {\n return x != j.x ? x < j.x : y < j.y;\n }\n};\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-可修改区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-全局变量区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\nconst int mod = 2333;\nconst int inf = (1LL << 31) - 1;\nconst ll llf = 1e18;\nconst double eps = 1e-5, PI = acos(-1);\nconst int dx[] = {-1, 0, 1, 0, -1, 1, 1, -1}; // 上左下右,顺时针\nconst int dy[] = {0, 1, 0, -1, 1, 1, -1, -1};\nconst int N = 1e5 + 10, M = 3e3 + 10;\nint cmb[M][M], sum[M][M];\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-全局变量区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-模板代码区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\n\nvoid prework() {\n for (int i = 0; i < mod; ++i) {\n sum[i][0] = cmb[i][0] = cmb[i][i] = 1;\n for (int j = 1; j < i; ++j) {\n cmb[i][j] = (cmb[i - 1][j] + cmb[i - 1][j - 1]) % mod;\n }\n for (int j = 1; j < mod; ++j) {\n sum[i][j] = (sum[i][j - 1] + cmb[i][j]) % mod;\n }\n }\n}\n\nint comb(int n, int m) {\n if (n < m) return 0;\n return cmb[n][m];\n}\n\nint lucas(ll n, ll m) {\n if (m == 0) return 1;\n if (n < mod) return comb(n, m);\n int res = comb(n % mod, m % mod) * lucas(n / mod, m / mod) % mod;\n return res;\n}\n\nint fac(ll n, ll m) {\n if (m == 0) return 1;\n if (n < m) return 0;\n // if (n < mod) return sum[n][m];\n int res = 0;\n if (m > mod) res = fac(n / mod, m / mod - 1) * sum[n % mod][mod - 1] % mod;\n if (n % mod) res = (res + lucas(n / mod, m / mod) * sum[n % mod][m % mod]) % mod;\n // printf(\"f(%lld, %lld) = %d\\n\", n % mod, powf(2, n % mod, mod), sum[n % mod][mod - 1]);\n return res;\n}\n\n\n\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-模板代码区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-主代码区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\nvoid problem() {\n ll n = IO(), m = IO();\n print(fac(n, m), '\\n');\n}\n\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-主代码区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\nint main() {\n int t = 1;\n prework();\n t = IO();\n // fny(mod, inv, mod);\n while (t--) problem();\n // while (1) problem();\n return 0;\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "超能粒子炮・改",
"query": "# 超能粒子炮・改\n## 题目描述\n曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改——一种可以发射威力更加强大的粒子流的神秘装置。\r\n\r\n超能粒子炮・改相比超能粒子炮,在威力上有了本质的提升。它有两个参数 $n$、$k$,它会向每个编号为 $0$ 到 $k$(包含两端)的位置 $i$ 发射威力为 $\\mathrm{C}_n^i \\mathbin{\\mathrm{mod}} 2333$ 的粒子流。\r\n\r\n现在 SHTSC 给出了他的超能粒子炮・改的参数,让你求出其发射的粒子流的威力之和除以 $2333$ 所得的余数。\n## 输入格式\n第一行一个整数 $t$ 表示数据组数。 \r\n之后 $t$ 行,每行两个整数 $n$、$k$,含义如题面描述。\n## 输出格式\n$t$ 行,每行一个整数,表示其粒子流的威力之和模 $2333$ 的值。\n## 样例\n输入:\n3\n5 5\n10 7\n1145 14\n输出:\n32\n968\n763\n\n\n## 数据范围与提示\n对于 $100\\%$ 的数据,$t \\leq 100000$,$n, k \\leq 10^{18}$。",
"test": {
"input": "3\n5 5\n10 7\n1145 14",
"output": "32\n968\n763"
}
},
{
"code_id": 3,
"code": "// {'input': '3\\n5 5\\n10 7\\n1145 14', 'output': '32\\n968\\n763'} \n/*\n已完成\n*/\n#include <bits/stdc++.h>\n#define ll long long\n#define rep(u, i, e) for (int i = head[u]; ~i; i = e[i].next)\n#define pb push_back\n\n#define umap unerdered_map\n#define uset unerdered_set\n#define vi vector\n#define all(x) x.begin(), x.end()\n\nusing namespace std;\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-快读与快输-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\ninline ll IO() {\n long long x = 0;\n int f = 0, c = getchar();\n for (; !isdigit(c) && c != -1; c = getchar()) {\n if (c == '-') f = 1;\n }\n if (c == -1) exit(0);\n for (; isdigit(c); c = getchar()) {\n x = (x << 1) + (x << 3) + (c ^ '0');\n }\n return f ? -x : x;\n}\nvoid getstr(string &s) {\n int c = getchar();\n while (c < 33 && c != -1) c = getchar();\n if (c == -1) exit(0);\n for(;c > 32; c = getchar()) s.pb(c);\n}\nvoid print(ll x) {\n if (x < 0) putchar('-'), x = -x;\n if (x > 9) print(x / 10);\n putchar(x % 10 + '0');\n}\nvoid print(const string& s) { for (char c : s) putchar(c); }\ntemplate <typename T>\nvoid print(T x, char c) { print(x); putchar(c); }\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-快读与快输-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-不可修改区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\n// gcd\ntemplate <typename T>\nT gcd(T a, T b, T m = 0) { while (b) m = a % b, a = b, b = m; return a; }\n// 快速幂\nll powf(ll a, ll b, ll mod, ll res = 1) {\n a %= mod;\n while (b) {\n if (b & 1) res = res * a % mod;\n a = a * a % mod, b >>= 1;\n }\n return res;\n}\n// 数组读入\ntemplate <typename T>\ninline void fill_w(T *a, int cnt) { for (int i = 0; i < cnt; ++i) read(a[i]);}\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-不可修改区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-可修改区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\n/*↓可修改区*/\n// 自定义结构体\nstruct pii {\n int x, y;\n bool operator< (const pii& j) {\n return x != j.x ? x < j.x : y < j.y;\n }\n};\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-可修改区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-全局变量区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\nconst int mod = 2333;\nconst int inf = (1LL << 31) - 1;\nconst ll llf = 1e18;\nconst double eps = 1e-5, PI = acos(-1);\nconst int dx[] = {-1, 0, 1, 0, -1, 1, 1, -1}; // 上左下右,顺时针\nconst int dy[] = {0, 1, 0, -1, 1, 1, -1, -1};\nconst int N = 1e5 + 10, M = 3e3 + 10;\nint cmb[M][M], sum[M][M];\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-全局变量区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-模板代码区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\n\nvoid prework() {\n for (int i = 0; i < mod; ++i) {\n sum[i][0] = cmb[i][0] = cmb[i][i] = 1;\n for (int j = 1; j < i; ++j) {\n cmb[i][j] = (cmb[i - 1][j] + cmb[i - 1][j - 1]) % mod;\n }\n for (int j = 1; j < mod; ++j) {\n sum[i][j] = (sum[i][j - 1] + cmb[i][j]) % mod;\n }\n }\n}\n\nint comb(int n, int m) {\n if (n < m) return 0;\n return cmb[n][m];\n}\n\nint lucas(ll n, ll m) {\n if (m == 0) return 1;\n if (n < mod) return comb(n, m);\n return comb(n % mod, m % mod) * lucas(n / mod, m / mod) % mod;\n}\n\nint fac(ll n, ll m) {\n if (m == 0) return 1;\n if (n < mod && m < mod) return sum[n][m];\n int res = fac(n / mod, m / mod) * sum[n % mod][mod - 1] % mod;\n if (n % mod) res = (res + lucas(n / mod, n / mod + 1) * sum[n % mod][m % mod]) % mod;\n return res;\n}\n\n\n\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-模板代码区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\n/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-主代码区-↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/\nvoid problem() {\n ll n = IO(), m = IO();\n print(fac(n, m), '\\n');\n}\n\n/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑-主代码区-↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/\n\n\n\n\n\n\nint main() {\n\n int t = 1;\n prework();\n t = IO();\n // fny(mod, inv, mod);\n while (t--) problem();\n // while (1) problem();\n return 0;\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "超能粒子炮・改",
"query": "# 超能粒子炮・改\n## 题目描述\n曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改——一种可以发射威力更加强大的粒子流的神秘装置。\r\n\r\n超能粒子炮・改相比超能粒子炮,在威力上有了本质的提升。它有两个参数 $n$、$k$,它会向每个编号为 $0$ 到 $k$(包含两端)的位置 $i$ 发射威力为 $\\mathrm{C}_n^i \\mathbin{\\mathrm{mod}} 2333$ 的粒子流。\r\n\r\n现在 SHTSC 给出了他的超能粒子炮・改的参数,让你求出其发射的粒子流的威力之和除以 $2333$ 所得的余数。\n## 输入格式\n第一行一个整数 $t$ 表示数据组数。 \r\n之后 $t$ 行,每行两个整数 $n$、$k$,含义如题面描述。\n## 输出格式\n$t$ 行,每行一个整数,表示其粒子流的威力之和模 $2333$ 的值。\n## 样例\n输入:\n3\n5 5\n10 7\n1145 14\n输出:\n32\n968\n763\n\n\n## 数据范围与提示\n对于 $100\\%$ 的数据,$t \\leq 100000$,$n, k \\leq 10^{18}$。",
"test": {
"input": "3\n5 5\n10 7\n1145 14",
"output": "32\n968\n763"
}
},
{
"code_id": 2,
"code": "// {'input': '25 5 2\\n2\\n11\\n14\\n17\\n21', 'output': '4'} \n/*\n 无问题\n*/\n#include<iostream>\n#include<cstdio>\n#include<cstring>\n#include<algorithm>\n#define N 50010\nusing namespace std;\nint a[N],n,m,l=1e9,r,mid,dis,ans;\nbool check(int mid){\n\tint cnt=0,rec=0;\n\tfor (int i=1;i<=n+1;i++){\n\t\tif (a[i]-rec<mid) cnt++;\n\t\telse rec=a[i];\n\t\tif (cnt>m) return false; \n\t}\n\treturn true;\n}\nint main(){\n\tscanf(\"%d%d%d\",&dis,&n,&m);\n\ta[n+1]=dis;\n\tfor (int i=1;i<=n;i++){\n\t\tscanf(\"%d\",&a[i]);\n\t\tl=min(l,a[i]-a[i-1]);\n\t\tr=max(r,a[i]-a[i-1]);\n\t}\n\tif (m==n){\n\t\tprintf(\"%d\",dis);\n\t\treturn 0;\n\t}\n\twhile(l<=r){\n\t\tmid=(l+r)/2;\n\t\tif (check(mid)){\n\t\t\tans=mid;\n\t\t\tl=mid+1;\n\t\t}\n\t\telse r=mid-1;\n\t}\n\tprintf(\"%d\",ans);\n\treturn true;\n}",
"status": [
"RE"
],
"details": [
"RE: Testcase:0"
],
"tcb_id": "跳石头",
"query": "# 跳石头\n## 题目描述\n一年一度的“跳石头”比赛又要开始了!\r\n\r\n这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 $ N $ 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。\r\n\r\n为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 $ M $ 块岩石(不能移走起点和终点的岩石)。\n## 输入格式\n输入文件第一行包含三个整数 $ L,N,M $,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。\r\n\r\n接下来 $ N $ 行,每行一个整数,第 $ i $ 行的整数 $ D_i $($ 0 < D_i < L $)表示第 $ i $ 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同 一个位置。\n## 输出格式\n输出文件只包含一个整数,即最短跳跃距离的最大值。\n## 样例\n输入:\n25 5 2\n2\n11\n14\n17\n21\n输出:\n4\n\n\n数据范围与提示\r\n对于 $ 100\\% $ 的数据,$ 0 \\leq M \\leq N \\leq 50,000 $,$ 1 \\leq L \\leq 1,000,000,000 $。",
"test": {
"input": "25 5 2\n2\n11\n14\n17\n21",
"output": "4"
}
},
{
"code_id": 0,
"code": "// {'input': '4 3\\n1 2 3\\n2 3 1\\n3 4 4', 'output': '6.00000000'} \n/*\n\t无问题\n*/\n#include<bits/stdc++.h>\n#define ci const int\n#define D long double\nusing namespace std;\nci N=1e5+5;\nint n,m,head[N],nx[N<<1],to[N<<1],w[N<<1],tot,d[N],son[N],dfn[N],low[N],st[N],pre[N],dis[N],top,t,val[N];\nD up[N],dn[N],ans;bool c[N];\ninline void add(ci x,ci y,ci z){\n\tto[++tot]=y,nx[tot]=head[x],head[x]=tot,w[tot]=z;\n}\nvoid dfs(ci x,ci f){\n\tfor(int i=head[x],y;i;i=nx[i])\n\t\tif(!c[y=to[i]]&&y!=f)\n\t\t\tdfs(y,x),++son[x],dn[x]+=dn[y]+w[i];\n\tif(son[x])dn[x]/=son[x];\n}\nvoid DFS(ci x,ci f){\n\tfor(int i=head[x],y;i;i=nx[i])\n\t\tif(!c[y=to[i]]&&y!=f){\n\t\t\tint cnt=0;D sum=0;\n\t\t\tif(!f)cnt=2,sum=up[x]*2;\n\t\t\telse cnt=1,sum=up[x];\n\t\t\tcnt+=son[x]-1,sum+=dn[x]*son[x]-(dn[y]+w[i]);\n\t\t\tif(cnt)up[y]=sum/cnt;\n\t\t\telse up[y]=0;\n\t\t\tup[y]+=w[i],DFS(y,x);\n\t\t}\n//\tprintf(\"%d %Lf\\n\",x,up[x]);\n}\nvoid work(ci s,ci t,ci e){\n\tfor(int x=t;x!=s;x=pre[x])st[++top]=x,dis[top]=val[x];\n\tst[++top]=s,dis[top]=e;\n//\tfor(int i=1;i<=top;++i)printf(\"%d \",st[i]);puts(\"\");\n\tfor(int i=1;i<=top;++i)c[st[i]]=1;\n\tfor(int i=1;i<=top;++i)dfs(st[i],0),st[i+top]=st[i],dis[i+top]=dis[i];\n\tfor(int i=1;i<=top;++i){\n\t\tD tmp=dn[st[i+top-1]];\n\t\tfor(int j=i+top-2;j>i;--j)tmp=(tmp+dis[j]+dn[st[j]]*son[st[j]])/(son[st[j]]+1);\n\t\ttmp+=dis[i],up[st[i]]=tmp;\n\t}\n\tfor(int i=top+1;i<=top<<1;++i){\n\t\tD tmp=dn[st[i-top+1]];\n\t\tfor(int j=i-top+2;j<i;++j)tmp=(tmp+dis[j-1]+dn[st[j]]*son[st[j]])/(son[st[j]]+1);\n\t\ttmp+=dis[i-1],up[st[i]]=(up[st[i]]+tmp)/2;\n\t}\n\tfor(int i=1;i<=top;++i)DFS(st[i],0);\n\tD ans=0;\n\tfor(int i=1;i<=n;++i)ans+=(dn[i]*son[i]+up[i]*((int)c[i]+1))/(son[i]+(int)c[i]+1);\n\tprintf(\"%.5Lf\",ans/n);\n\texit(0);\n}\nvoid tarjan(ci x,ci fr){\n\tdfn[x]=low[x]=++t;\n\tfor(int i=head[x],y;i;i=nx[i])\n\t\tif(!dfn[y=to[i]])pre[y]=x,val[y]=w[i],tarjan(y,x),low[x]=min(low[x],low[y]);\n\t\telse if(y^fr)low[x]=min(low[x],dfn[y]);\n\tfor(int i=head[x],y;i;i=nx[i])\n\t\tif(dfn[y=to[i]]>dfn[x]&&low[y]<=dfn[x]&&x!=pre[y])work(x,y,w[i]);\n}\nint main(){\n\tscanf(\"%d%d\",&n,&m);\n\tfor(int i=1,x,y,z;i<=m;++i)scanf(\"%d%d%d\",&x,&y,&z),add(x,y,z),add(y,x,z);\n\ttarjan(1,0);\n\treturn 0;\n}",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "迷失游乐园",
"query": "# 迷失游乐园\n## 题目描述\n放假了,小 Z 觉得呆在家里特别无聊,于是决定一个人去游乐园玩。进入游乐园后,小 Z 看了看游乐园的地图,发现可以将游乐园抽象成**有 $n$ 个景点、$m$ 条道路的无向连通图,且该图中至多有一个环(即 $m$ 只可能等于 $n$ 或者 $n-1$)**。\r\n\r\n小 Z 现在所在的大门也正好是一个景点。小 Z 不知道什么好玩,于是他决定,从当前位置出发,每次随机去一个和当前景点有道路相连的景点,并且**同一个景点不去两次(包括起始景点)**。贪玩的小 Z 会一直游玩,直到当前景点的相邻景点都已经访问过为止。\r\n\r\n小 Z 所有经过的景点按顺序构成一条非重复路径,他想知道这条路径的**期望长度**是多少?\r\n\r\n小 Z 把游乐园的抽象地图画下来带回了家,可是忘了标哪个点是大门,他只好假设每个景点都可能是大门(即每个景点作为起始点的概率是一样的)。同时,他每次在选择下一个景点时会**等概率地随机**选择一个**还没去过的相邻景点**。\n## 输入格式\n第一行是两个整数 $n$ 和 $m$,分别表示景点数和道路数。\r\n\r\n接下来 $m$ 行,每行三个整数 $X_i , Y_i , W_i$,分别表示第 $i$ 条路径的两个景点为 $X_i , Y_i$,路径长 $W_i$。所有景点的编号从 $1$ 至 $n$,两个景点之间至多只有一条道路。\n## 输出格式\n共一行,包含一个实数,即路径的期望长度。\n## 样例\n输入:\n4 3\n1 2 3\n2 3 1\n3 4 4\n输出:\n6.00000000\n\n样例数据中共有 $6$ 条不同的路径:\n\n| 路径 | 长度 | 概率 |\n| :-: | :-: | :-: |\n| $1 \\rightarrow 4$ | $8$ | $\\frac 14$ |\n| $2 \\rightarrow 1$ | $3$ | $\\frac 18$ |\n| $2 \\rightarrow 4$ | $5$ | $\\frac 18$ |\n| $3 \\rightarrow 1$ | $4$ | $\\frac 18$ |\n| $3 \\rightarrow 4$ | $4$ | $\\frac 18$ |\n| $4 \\rightarrow 1$ | $8$ | $\\frac 14$ |\n\n因此期望长度 $= \\frac84 + \\frac38 + \\frac58 + \\frac48 + \\frac48 + \\frac84 = 6.00$.\n## 数据范围与提示\n对于 $100\\%$ 的数据,$1 \\le W_i \\le 100$。$n \\leq 100000$, $m = n-1$ 或 $m = n$且环中节点个数 $\\leq 20$",
"test": {
"input": "4 3\n1 2 3\n2 3 1\n3 4 4",
"output": "6.00000000"
}
},
{
"code_id": 1,
"code": "// {'input': '3 5 1\\n1 2\\n2 3\\n1 1\\n1 3\\n2 2 3\\n3 1 2 3\\n2 1 2', 'output': '0\\n4\\n4\\n4\\n1'} \n/*\n 无问题\n*/\n#include<bits/stdc++.h>\n\n#define For(i,l,r) for(int i = (l),i##end = (r);i <= i##end;i++)\n\n#define Fordown(i,r,l) for(int i = (r),i##end = (l);i >= i##end;i--)\n\nusing namespace std;\n\ntypedef long long ll;\n\nconst int INF = 1e9;\n\nconst int N = 18,mod = 998244353;\n\nint to[(N << 1) + 5],nex[(N << 1) + 5],beg[N + 5],deg[N + 5],Invdeg[N + 5],A[N + 5],B[N + 5],ans[1 << N],bit[1 << N];\n\nint e;\n\ninline int read(){\n\n\tint x = 0,flag = 1;\n\n\tchar ch = getchar();\n\n\twhile(!isdigit(ch) && ch != '-')ch = getchar();\n\n\tif(ch == '-')flag = -1,ch = getchar();\n\n\twhile(isdigit(ch))x = (x << 3) + (x << 1) + ch - '0',ch = getchar();\n\n\treturn x * flag;\n\n}\n\ninline int fpm(int a,int b){\n\n\tint res = 1;\n\n\twhile(b){\n\n\t\tif(b & 1)res = 1ll * res * a % mod;\n\n\t\ta = 1ll * a * a % mod,b /= 2;\n\n\t}\n\n\treturn res;\n\n}\n\ninline void add(int x,int y){\n\n\tto[++e] = y,nex[e] = beg[x],beg[x] = e;\n\n}\n\ninline int Mod(int val){\n\n\tif(val >= mod)val -= mod;\n\n\treturn val;\n\n}\n\ninline void Dp(int x,int fa,int S){\n\n\tif(S & (1 << (x - 1))){ A[x] = B[x] = 0;return; }\n\n\tint totA = 0,totB = 0;\n\n\tfor(int i = beg[x];i;i = nex[i]){\n\n\t\tif(to[i] == fa)continue;\n\n\t\tDp(to[i],x,S);\n\n\t\ttotA = Mod(totA + A[to[i]]),totB = Mod(totB + B[to[i]]);\n\n\t}\n\n\tint val = fpm(Mod(mod + 1 - 1ll * totA * Invdeg[x] % mod),mod - 2);\n\n\tA[x] = 1ll * Invdeg[x] * val % mod;\n\n\tB[x] = (1 + 1ll * totB * Invdeg[x] % mod) * val % mod;\n\n}\n\nint main(){\n\n\tint n = read(),q = read(),rt = read();\n\n\tFor(i,1,n - 1){\n\n\t\tint x = read(),y = read();\n\n\t\tadd(x,y),add(y,x);\n\n\t\tdeg[x]++,deg[y]++;\n\n\t}\n\n\tFor(i,1,n)Invdeg[i] = fpm(deg[i],mod - 2);\n\n\tFor(i,0,(1 << n) - 1){\n\n\t\tDp(rt,0,i);\n\n\t\tans[i] = B[rt];\n\n\t\tbit[i] = bit[i >> 1] + (i & 1);\n\n\t}\n\n\twhile(q--){\n\n\t\tint k = read(),val = 0;\n\n\t\tFor(i,1,k)val |= (1 << (read() - 1));\n\n\t\tint res = 0;\n\n\t\tfor(int i = val;i;i = (i - 1) & val)\n\n\t\t\tres = Mod(res + (bit[i] & 1 ? 1 : -1) * ans[i]);\n\n\t\tprintf(\"%d\\n\",res);\n\n\t}\n\n\treturn 0;\n\n}",
"status": [
"MLE"
],
"details": [
"MLE: Testcase:0"
],
"tcb_id": "随机游走",
"query": "# 随机游走\n## 题目描述\n给定一棵 $n$ 个结点的树,你从点 $x$ 出发,每次等概率随机选择一条与所在点相邻的边走过去。\r\n\r\n有 $Q$ 次询问,每次询问给定一个集合 $S$,求如果从 $x$ 出发一直随机游走,直到点集 $S$ 中所有点都至少经过一次的话,期望游走几步。\r\n\r\n特别地,点 $x$(即起点)视为一开始就被经过了一次。\r\n\r\n答案对 $998244353 $ 取模。\n## 输入格式\n第一行三个正整数 $n,Q,x$。\r\n\r\n接下来 $n-1$ 行,每行两个正整数 $(u,v)$ 描述一条树边。\r\n\r\n接下来 $Q$ 行,每行第一个数 $k$ 表示集合大小,接下来 $k$ 个互不相同的数表示集合 $S$。\n## 输出格式\n输出 $Q$ 行,每行一个非负整数表示答案。\n## 样例\n输入:\n3 5 1\n1 2\n2 3\n1 1\n1 3\n2 2 3\n3 1 2 3\n2 1 2\n输出:\n0\n4\n4\n4\n1\n\n样例给的树是一条长度为 $3$ 的链,且起点是链的一端,所以答案只跟最远的那个点有关。\n\n当最远的点是 $2$ 时,显然只需要 $1$ 步就行了。\n\n当最远的点是 $3$ 时,通过计算可得期望 $4$ 步到达。\n## 数据范围与提示\n对于 $100\\%$ 的数据,有 $1\\leq n\\leq 18$,$1\\leq Q\\leq 5000$,$1\\leq k\\leq n$。",
"test": {
"input": "3 5 1\n1 2\n2 3\n1 1\n1 3\n2 2 3\n3 1 2 3\n2 1 2",
"output": "0\n4\n4\n4\n1"
}
},
{
"code_id": 0,
"code": "// {'input': '1 3\\n1 1 3', 'output': '2'} \n//14\n/*\n 无问题\n 应该是时间和空间限制不够\n*/\n\n#include<cstdio>\n\n#include<algorithm>\n\n#include<vector>\n\nusing namespace std;\n\n\n\nconst int maxn = 1 << 18;\n\nconst int lbt = 998244353;\n\nconst int bsz = 100;\n\n\n\nint f[maxn];\n\nint l[maxn];\n\n\n\nvoid ntt(int *a, int k, int *ans, bool rev);\n\nvoid add(vector<int> &a, vector<int> &b, vector<int> &c);\n\nvoid juanji(vector<int> &a, vector<int> &b, vector<int> &c);\n\nvoid solve(int n);\n\nvoid cal(vector<int> &f, vector<int> &g1, vector<int> &g2, int n, int base);\n\nint cal_rev(int a);\n\n\n\nint read() {\n\n\tint ans = 0;\n\n\tchar c;\n\n\twhile (scanf(\"%c\", &c), c<'0' || c>'9');\n\n\tans = c - '0';\n\n\twhile (scanf(\"%c\", &c), c >= '0' && c <= '9') {\n\n\t\tans = 10 * ans + c - '0';\n\n\t}\n\n\treturn ans;\n\n}\n\n\n\nint main() {\n\n\tsolve(499);\n\n\tint T;\n\n\tscanf(\"%d\", &T);\n\n\tint n;\n\n\tscanf(\"%d\", &n);\n\n\twhile (T--) {\n\n\t\tfor (int i = 1; i <= n; i++) {\n\n\t\t\tl[i] = read();\n\n\t\t}\n\n\t\tint ans = 1;\n\n\t\tif (l[n] != n) ans = 0;\n\n\t\tfor (int i = 1; i <= n; i++) {\n\n\t\t\tint cur = i - 1;\n\n\t\t\tint cnt = 0;\n\n\t\t\twhile (cur > i - l[i]) {\n\n\t\t\t\tcnt++;\n\n\t\t\t\tcur -= l[cur];\n\n\t\t\t}\n\n\t\t\tans = (long long)ans*f[cnt] % lbt;\n\n\t\t\tif (cur != i - l[i]) {\n\n\t\t\t\tans = 0;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tprintf(\"%d\\n\", ans);\n\n\t}\n\n\treturn 0;\n\n}\n\n\n\nvoid solve(int n) {\n\n\tif (n == 0) {\n\n\t\tf[0] = 1;\n\n\t\treturn;\n\n\t}\n\n\tint m = n / 2;\n\n\tsolve(m);\n\n\tvector<int> a(m + 1), b(m + 1), c, g(n - m);\n\n\tfor (int i = 1; i <= m; i++) {\n\n\t\ta[i] = (long long)(i - 1)*f[i] % lbt;\n\n\t\tb[i] = f[i];\n\n\t}\n\n\tjuanji(a, b, c);\n\n\tc.resize(n + 1);\n\n\tg[0] = ((long long)(lbt + 2 - m)*f[m] + c[m + 1]) % lbt;\n\n\tfor (int i = 1; i < n - m; i++) {\n\n\t\tg[i] = c[i + m + 1];\n\n\t}\n\n\tcal(g, b, a, n - m - 1, m + 1);\n\n\tfor (int i = 0; i < n - m; i++) {\n\n\t\tf[i + m + 1] = g[i];\n\n\t}\n\n}\n\n\n\nvoid cal(vector<int> &f, vector<int> &g1, vector<int> &g2, int n, int base) {\n\n\tif (n == 0) return;\n\n\tint m = n / 2;\n\n\tcal(f, g1, g2, m, base);\n\n\tvector<int> a(m + 1), b(m + 1), c, d;\n\n\tfor (int i = 0; i <= m; i++) {\n\n\t\ta[i] = (long long)(i + base - 1)*f[i] % lbt;\n\n\t\tb[i] = f[i];\n\n\t}\n\n\tjuanji(a, g1, c);\n\n\tjuanji(g2, b, d);\n\n\tc.resize(n + 1);\n\n\td.resize(n + 1);\n\n\tvector<int> fr(n - m);\n\n\tfr[0] = (f[m + 1] + (long long)(lbt + 2 - m - base)*f[m] + c[m + 1] + d[m + 1]) % lbt;\n\n\tfor (int i = 1; i < n - m; i++) {\n\n\t\tfr[i] = ((long long)f[i + m + 1] + c[i + m + 1] + d[i + m + 1]) % lbt;\n\n\t}\n\n\tcal(fr, g1, g2, n - m - 1, base + m + 1);\n\n\tfor (int i = 0; i < n - m; i++) {\n\n\t\tf[i + m + 1] = fr[i];\n\n\t}\n\n}\n\n\n\nint fast_pow(int a, int t) {\n\n\tint ans = 1;\n\n\tfor (int i = 31; i >= 0; i--) {\n\n\t\tans = (long long)ans*ans%lbt;\n\n\t\tif (t >> i & 1) ans = (long long)a*ans%lbt;\n\n\t}\n\n\treturn ans;\n\n}\n\n\n\nvoid ntt(int *a, int k, int *ans, bool rev) {\n\n\tstatic int bit_rev[maxn];\n\n\tstatic int rev3 = ::cal_rev(3);\n\n\tint n = 1 << k;\n\n\tfor (int i = 0; i < n; i++) {\n\n\t\tbit_rev[i] = (bit_rev[i >> 1] >> 1) | ((i & 1) << k - 1);\n\n\t}\n\n\tfor (int i = 0; i < n; i++) {\n\n\t\tans[bit_rev[i]] = a[i];\n\n\t}\n\n\tfor (int t = 1; t <= k; t++) {\n\n\t\tint w_n = fast_pow(rev ? rev3 : 3, (lbt - 1) / (1 << t));\n\n\t\tfor (int i = 0; i < n; i += (1 << t)) {\n\n\t\t\tint w = 1;\n\n\t\t\tfor (int j = i; j < i + (1 << t - 1); j++) {\n\n\t\t\t\tint ans0 = ans[j];\n\n\t\t\t\tint ans1 = ans[j + (1 << t - 1)];\n\n\t\t\t\tans[j] = (ans0 + (long long)w * ans1) % lbt;\n\n\t\t\t\tans[j + (1 << t - 1)] = (ans0 + (long long)(lbt - w)*ans1) % lbt;\n\n\t\t\t\tw = (long long)w_n*w%lbt;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tif (rev) {\n\n\t\tint rn = ::cal_rev(n);\n\n\t\tfor (int i = 0; i < n; i++) {\n\n\t\t\tans[i] = (long long)rn*ans[i] % lbt;\n\n\t\t}\n\n\t}\n\n}\n\n\n\nvoid add(vector<int> &a, vector<int> &b, vector<int> &c) {\n\n\tc.clear();\n\n\tc.resize(max(a.size(), b.size()));\n\n\tfor (int i = 0; i < a.size(); i++) {\n\n\t\tc[i] = a[i];\n\n\t}\n\n\tfor (int i = 0; i < b.size(); i++) {\n\n\t\tc[i] = (c[i] + b[i]) % lbt;\n\n\t}\n\n}\n\n\n\nvoid juanji(vector<int> &a, vector<int> &b, vector<int> &c) {\n\n\tstatic int fa[maxn], fb[maxn];\n\n\tstatic int ta[maxn], tb[maxn];\n\n\tif (a.size() + b.size() < bsz) {\n\n\t\tc.clear();\n\n\t\tc.resize(a.size() + b.size() - 1);\n\n\t\tfor (int i = 0; i < a.size(); i++) {\n\n\t\t\tfor (int j = 0; j < b.size(); j++) {\n\n\t\t\t\tc[i + j] = (c[i + j] + (long long)a[i] * b[j]) % lbt;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn;\n\n\t}\n\n\tint k = 0;\n\n\twhile ((1 << k) < a.size() + b.size() + 1) k++;\n\n\tfor (int i = 0; i < a.size(); i++) ta[i] = a[i];\n\n\tfor (int i = a.size(); i < (1 << k); i++) ta[i] = 0;\n\n\tfor (int i = 0; i < b.size(); i++) tb[i] = b[i];\n\n\tfor (int i = b.size(); i < (1 << k); i++) tb[i] = 0;\n\n\tntt(ta, k, fa, 0);\n\n\tntt(tb, k, fb, 0);\n\n\tfor (int i = 0; i < (1 << k); i++) fa[i] = (long long)fa[i] * fb[i] % lbt;\n\n\tntt(fa, k, fb, 1);\n\n\tint n = a.size() + b.size() - 1;\n\n\tc.clear();\n\n\tc.resize(n);\n\n\tfor (int i = 0; i < n; i++) c[i] = fb[i];\n\n}\n\n\n\nint d, x, y;\n\n\n\nvoid gcd(int a, int b) {\n\n\tif (!b) {\n\n\t\td = a;\n\n\t\tx = 1;\n\n\t\ty = 0;\n\n\t\treturn;\n\n\t}\n\n\tgcd(b, a%b);\n\n\tint t = x;\n\n\tx = y;\n\n\ty = t - a / b * y;\n\n}\n\n\n\nint cal_rev(int a) {\n\n\tgcd(a, lbt);\n\n\tif (x < 0) x += lbt;\n\n\treturn x;\n\n}",
"status": [
"TLE"
],
"details": [
"TLE: Testcase:0"
],
"tcb_id": "青蕈领主",
"query": "青蕈领主\n题目描述\n> “也许,我的生命也已经如同风中残烛了吧。”小绿如是说。\r\n\r\n小绿同学因为微积分这门课,对“连续”这一概念产生了浓厚的兴趣。小绿打算把连续的概念放到由整数构成的序列上,他定义一个长度为 $m$ 的整数序列是连续的,当且仅当这个序列中的最大值与最小值的差,不超过$m-1$。例如 $\\{1,3,2\\}$ 是连续的,而 $\\{1,3\\}$ 不是连续的。\r\n\r\n某天,小绿的顶头上司板老大,给了小绿 $T$ 个长度为 $n$ 的排列。小绿拿到之后十分欢喜,他求出了每个排列的每个区间是否是他所定义的“连续”的。然而,小绿觉得被别的“连续”区间包含住的“连续”区间不够优秀,于是对于每个排列的所有右端点相同的“连续”区间,他只记录下了长度最长的那个“连续”区间的长度。也就是说,对于板老大给他的每一个排列,他都只记录下了在这个排列中,对于每一个 $1 \\le i \\le n$,右端点为 $i$ 的最长“连续”区间的长度 $L_i$。显然这个长度最少为 $1$,因为所有长度为 $1$ 的整数序列都是连续的。\r\n\r\n做完这一切后,小绿爬上绿色床,美美地做了一个绿色的梦。\r\n\r\n可是第二天醒来之后,小绿惊讶的发现板老大给他的所有排列都不见了,只剩下他记录下来的 $T$ 组信息。小绿知道自己在劫难逃,但是作为一个好奇的青年,他还是想知道:对于每一组信息,有多少个和信息符合的长度为 $n$ 的排列。\r\n\r\n由于小绿已经放弃治疗了,你只需要告诉他每一个答案对 $998244353$ 取模的结果。\r\n\r\n我们并不保证一定存在至少一个符合信息的排列,因为小绿也是人,他也有可能犯错。\n输入格式\n输入的第一行包含两个整数 $T,n$,分别表示板老大给小绿的排列个数、以及每个排列的长度。\r\n\r\n接下来 $T$ 行,每行描述一组信息,包含 $n$ 个正整数,第 $i$ 组信息的从左往右第 $j$ 个整数 $L_{i,j}$ 表示第 $i$ 个排列中右端点为第 $j$ 个数的最长“连续”区间的长度。\r\n\r\n对于每一行,如果行内包含多个数,则用单个空格将它们隔开。\n输出格式\n对于每组信息,输出一行一个整数表示可能的排列个数对 $998244353$ 取模的结果。由于是计算机帮你算,所以我们不给你犯错的机会。\n样例\n输入:\n1 3\n1 1 3\n输出:\n2\n\n数据范围与提示\n对于所有测试数据,$1 \\le T \\le 100$,$1 \\le N \\le 50000$, $1 \\le L_{i,j} \\le j$。 \r\n本题部分测试点的输入规模较大,请注意读入效率。",
"test": {
"input": "1 3\n1 1 3",
"output": "2"
}
},
{
"code_id": 0,
"code": "// {'input': '3 10\\na', 'output': 'aaj'} \n#include<bits/stdc++.h>\n\nusing namespace std;\n\n\n\ntypedef __int128 ll;\n\n#define rep(i,a,b) for(int i=a,i##end=b;i<=i##end;++i)\n\n#define drep(i,a,b) for(int i=a,i##end=b;i>=i##end;--i)\n\n\n\nchar IO;\n\ntemplate <class T=int> T rd(){\n\n\tT s=0; int f=0;\n\n\twhile(!isdigit(IO=getchar())) f|=IO=='-';\n\n\tdo s=(s<<1)+(s<<3)+(IO^'0');\n\n\twhile(isdigit(IO=getchar()));\n\n\treturn f?-s:s;\n\n}\n\n\n\nconst int N=52,S=26;\n\nconst ll U=18e18;\n\n\n\nvoid chk(ll &a){ a>U && (a=U); }\n\n\n\nint n,m;\n\nll k;\n\nchar s[N];\n\nint nxt[N],trans[N][S];\n\nvoid Init_KMP(){\n\n\trep(i,2,m) {\n\n\t\tint j=nxt[i-1];\n\n\t\twhile(j && s[i]!=s[j+1]) j=nxt[j];\n\n\t\tif(s[i]==s[j+1]) j++;\n\n\t\tnxt[i]=j;\n\n\t}\n\n\trep(i,0,m) {\n\n\t\trep(j,0,S-1) {\n\n\t\t\tint k=i,f=1;\n\n\t\t\twhile(s[k+1]!=j+'a') {\n\n\t\t\t\tf&=j+'a'>s[k+1];\n\n\t\t\t\tif(!k) break;\n\n\t\t\t\tk=nxt[k];\n\n\t\t\t}\n\n\t\t\tif(s[k+1]==j+'a') k++;\n\n\t\t\ttrans[i][j]=f?k:-1;\n\n\t\t}\n\n\t}\n\n}\n\n\n\nll dp[N][N][N];\n\nll Ans[N];\n\n\n\nll Calc(int k=0){\n\n\tm=strlen(s+1),Init_KMP();\n\n\tll ans=0;\n\n\trep(st,(k?0:m-1),m) {\n\n\t\tAns[st]=0;\n\n\t\trep(i,0,n) rep(j,0,st) rep(d,0,n) dp[i][j][d]=0;\n\n\t\tdp[0][st][0]=1;\n\n\t\trep(i,1,n) {\n\n\t\t\trep(j,0,st) rep(d,0,i) if(dp[i-1][j][d]){ \n\n\t\t\t\trep(c,j==m?0:s[j+1]-'a',S-1) if(~trans[j][c]) {\n\n\t\t\t\t\tchk(dp[i][trans[j][c]][d+(trans[j][c]==st)]+=dp[i-1][j][d]);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\trep(i,1,n) rep(d,0,n) if(dp[i][st][d]) {\n\n\t\t\tif(dp[i][st][d]==U) {\n\n\t\t\t\tAns[st]=U;\n\n\t\t\t\tgoto End;\n\n\t\t\t}\n\n\t\t\trep(j,2,min(n/i,n/d)) dp[i*j][st][d*j]-=dp[i][st][d];\n\n\t\t\tif(i>m || st!=m) chk(Ans[st]+=dp[i][st][d]/d);\n\n\t\t}\n\n\t\tEnd:;\n\n\t}\n\n\trep(i,0,m) chk(ans+=Ans[i]);\n\n\treturn ans;\n\n}\n\n\n\nint main(){ \n\n\n\tscanf(\"%d%lld%s\",&n,&k,s+1);\n\n\tk=Calc(1)-k+1;\n\n\tif(k<0) return puts(\"-1\"),0;\n\n\trep(i,1,n) {\n\n\t\tint l='a',r='a'+S-1,res=0;\n\n\t\twhile(l<=r){\n\n\t\t\tint mid=(l+r)>>1;\n\n\t\t\ts[i]=mid,s[i+1]=0;\n\n\t\t\tif(Calc()>=k) res=mid,l=mid+1;\n\n\t\t\telse r=mid-1;\n\n\t\t}\n\n\t\ts[i]=res,s[i+1]=0;\n\n\t\tif(!res || Calc()==k) break;\n\n\t}\n\n\tputs(s+1);\n\n}\n\n",
"status": [
"WA"
],
"details": [
"WA: Testcase:0 output: "
],
"tcb_id": "香山的树",
"query": "香山的树\n题目描述\n众所周知,香山的红叶非常著名。然而,CTSC 举行的时间是在 5 月,而红叶的季节是秋天,所以这个季节是看不到红叶的,于是我们在 CTSC 比赛中就只能讨论香山的树了。\r\n\r\ns-quark 很喜欢这些树,他计划在每棵树上贴上一个各不相同的标签。每个标签为条形,可以在树干上绕成一圈。为了区分每一棵树,s-quark 在每个标签上印了一个由小写英文字母组成的字符串。由于树干周长的限制,标签的长度也是有限的,因此这个字符串至多只能由 $N$ 个字母组成。\r\n\r\n但是,由于标签是在树干上围成一圈的,所以当标签在树上贴好以后,就不再能找到标签的起始位置了。所以,如果两棵树上的标签循环同构,例如分别为 `abc` 和 `cab`,那么这两棵树就不再能通过标签区分了。针对这个问题,s-quark 想了一个巧妙的办法。对于一个已经在树上贴好的标签,s-quark 规定它的起始位置必须是能够使得字符串的字典序最小的起始位,即如果看到的字符串是 `aba`,那么就可以推断出从正确的起始位置开始看到的字符串应为 `aab`。\r\n\r\n另外,对于有些标签,例如 `abab`,尽管符合字典序最小的规则,但是这样的起始位置不唯一,s-quark 认为这种情况也是不理想的。所以,这样的标签 s-quark 也会避免使用。s-quark 已经把所有的树编好了顺序,准备在第一棵树上贴标签 `a`,之后按照字典序给每棵树贴上不同的标签。\r\n\r\n以 $n = 3$ 为例,s-quark 将依次使用这些标签来标记这些树木:`a`,`aab`,`aac`,……,`aaz`,`ab`,`abb`,……,`abz`,`ac`,……\r\n\r\ns-quark 知道,香山上的树总共有 $K$ 棵。他想知道他将在最后一棵树上贴的标签是什么。但是,这个问题显然太简单了。现在, s-quark 要问你,如果他在第一棵树上贴的标签是字符串 $S$,那么他将在最后一棵树上贴的标签是什么呢?\n输入格式\r\n\r\n输入的第一行两个正整数 $N$ 和 $K$,分别为字符串的长度和树的总数。\r\n\r\n第二行一个由小写英文字母组成的字符串 $S$,表示在第一棵树上所贴的标签。$S$ 的长度不超过 $N$,并且保证是一个合法的标签。\n输出格式\n\r\n\r\n输出仅一行,输出一个字符串 $T$,表示 s-quark 将在最后一棵树上贴的标签,或输出 $−1$,表示剩余的合法标签数量不足以贴完所有的树。\n样例 1\n输入:\n3 10\na\n输出:\naaj\n\n\n样例 2\n输入:\n3 10\nxy\n输出:\nyzz\n\n\n样例 3\n输入:\n1 100\na\n输出:\n-1\n\n\n样例 4\n输入:\n25 1000000000000000\nu\n输出:\nuuuuuvxzuxvwwyzzuyzvxuvxw\n\n\n数据范围与提示\n以下是整理后的测试点信息表格:针对 100% 的数据 \n N ≤ 50, K ≤ 10¹⁵\n关键说明:\n1. 测试点1是特殊测试点,输入字符串S固定为a\n2. K的范围从10⁴到10¹⁵不等,需要特别注意大数处理\n3. N的规模从8逐步增加到50,测试不同规模的输入处理能力\n4. 测试点2-10均无特殊数据限制,考察通用解法\n5. 特别需要注意K达到10¹⁵时的算法效率问题",
"test": {
"input": "3 10\na",
"output": "aaj"
}
}
]

Xet Storage Details

Size:
309 kB
·
Xet hash:
447e942db0a8402a6f790dd0592e7b7a654846918af5200bfaf3b592e391f6f0

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.