求卡常(玄关
  • 板块灌水区
  • 楼主zyc_bot
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/2/27 19:03
  • 上次更新2024/2/27 21:04:36
查看原帖
求卡常(玄关
1076445
zyc_bot楼主2024/2/27 19:03

rt,这份代码如何卡常,同时求一些卡常技巧

#include <iostream>
#include <cstdio>
#include <algorithm> 

using namespace std;

#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
char *p1,*p2,buf[1<<20+5];
inline long long read(){
	int x=0,f=1;
	char c=gc();
	while(!isdigit(c)){
        if(c=='-')f=-1;
		c=gc();
	}while(isdigit(c)){
		x=x*10+(c^48);
		c=gc();
	}return x*f;
}

inline int read1(){
	int x=0;
	char c=gc();
	while(!isdigit(c)){
		c=gc();
	}while(isdigit(c)){
		x=x*10+(c^48);
		c=gc();
	}return x;
}

const int N = 5e4 + 1;

int n, m, k;
int l, r;
long long v, a[N];
long long maxx;

int main() {
    //scanf("%d%d", &n, &m);
    n = read1(), m = read1();
    while (m -- ) {
        //scanf("%d", &k);
        k = read1();
        if (k == 1) {
        	l = read1(), r = read1(), v = read();
            //scanf("%d%d%lld", &l, &r, &v);
            for (register unsigned int i = l; i <= r; i++) a[i] += v;
        }
        if (k == 2) {
            //scanf("%d%d", &l, &r);
            l = read1(), r = read1();
            reverse(a + l, a + r + 1);
        }
        if (k == 3) {
            //scanf("%d%d", &l, &r);
            l = read1(), r = read1();
            maxx = a[l];
            for (register unsigned int i = l; i <= r; i++)
                maxx = max(a[i], maxx);
            printf("%lld\n", maxx);
        }
    }
    return 0;
}
2024/2/27 19:03
加载中...