怀疑自己复杂度的可以来试一试。
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned ll
#define rll register ll
#define cll const ll
#define N 20000005
#define MOD 1000000007
using namespace std;
inline ll read()
{
rll x=0;bool f=1;register char c=getchar();
while(c<48||c>57){if(c=='-') f=0;c=getchar();}
while(c>=48&&c<=57){x=x*10+(c^48);c=getchar();}
return f?x:-x;
}
inline void write(ll x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+48);
}
mt19937 rd(time(0));
ll n=1e5,m=1e5;
int main()
{
freopen("data.in","w",stdout);
cout << n << ' ' << m << '\n';
for(rll i=1,k,op;i<=n;i++)
{
k=rd()%(ll)1e9;
op=rd()%2;
if(op) k*=-1;
cout << /*k*/-1 << ' ';
}
cout << '\n';
while(m--)
{
cll op=rd()%4+1;
cout << op << ' ';
if(op==1||op==2)
{
rll l=rd()%n+1,r=rd()%n+1;
if(l>r) swap(l,r);
cout << l << ' ' << r << '\n';
}
else if(op==3)
{
rll l=rd()%n+1,r=rd()%n+1,k,tp=rd()%2;
if(l>r) swap(l,r);
if(!tp) k=rd()%5+1;
else k=rd()%(ll)1e9+1;
tp=rd()%2;
if(tp) k*=-1;
cout << l << ' ' << r << ' ' << /*k*/2 << '\n';
}
else
{
rll x=rd()%n+1,k=rd()%(ll)1e9+1,tp;
tp=rd()%2;
if(tp) k*=-1;
cout << x << ' ' << /*k*/-1 << '\n';
}
}
return 0;
}