楼主知道暴力不对,轻喷,但我还是想知道我什么我的代码这么慢……
#include<bits/stdc++.h>
#pragma comment(linker,"/stack:200000000")
#pragma GCC optimize("Ofast,no-stack-protector")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define LL long long
#define ULL unsigned long long
#define LD long double
#define mem(x) memset((x),(0),(sizeof(x)))
#define R register
using namespace std;
int a[100000+5];
inline char nc()
{
static char buf[1000010],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,1000010,stdin),p1==p2)?EOF:*p1++;
}
inline int read()
{
register int s=0,w=0;
static char ch=nc();
for(;!isdigit(ch);)ch=nc();
for(;isdigit(ch);){
s=(s<<1)+(s<<3)+(ch^48);
ch=nc();
}
return w?-s:s;
}
int main(int argc,char *argv[])
{
//freopen("data.in","r",stdin);
//freopen("data.out","w",stdout);
R int n = read(),m = read();
for(R int i = 1;i <= n;++i) a[i] = read();
while(m--)
{
R int op = read(),l = read(),r = read(),x = read();
if(op&1)
{
for(int i = l;i <= r;++i)
a[i] -= (a[i]<=x)?0:x;
}
else
{
R int ans = 0;
for(R int i = l;i <= r;++i)
ans += (a[i] == x);
printf("%d\n",ans);
}
}
#ifndef ONLINE_JUDGE
printf("Time used = %.0lfms\n",((double)clock()/(double)CLOCKS_PER_SEC) * 1000.0);
#endif
return 0;exit(0);
}