CSP缺省源用什么?看看这篇文章就知道了!

目前功能:

  • 极其丑陋的码风和实现方式
  • define int __int128
  • 更差的输入输出体验
  • \(O(n\log n)\) 的 lower_bound 和被弃用的 upper_bound
  • 先 y 后 x 的 pow
  • \(O(\log ^2n)\) 的 __lg 和被弃用的 log
  • 被弃用的 memset 和 fill
  • 巨大常数的 min 和 max
  • sb 取地址符,让你调用 stl 函数后变量可能被更改
  • 常数是原版任何读入方式若干倍的 fin 和 fout
  • 神笔 cerr。
  • 还有一些小巧思等待你的发现!
#include<bits/stdc++.h>
#define int __int128
#define N 1e5
using namespace std;
namespace quesheng{
int size,cnt,sum,mod=5;
int fread(int &x){
	double y;
	cin>>y;
	sum++;
	if(sum%mod==0)cerr<<"输入成功!";
	return y;
}
#define fread(x) fread(x)
double scanf(double &x){
	double y;
	cin>>y;
	sum++;
	if(sum%mod==0)cerr<<"输入浮点数成功!";
	return y;
}
#define scanf(x) scanf(x)
int cin(char &x){
	char y;
	y=getchar();
	sum++;
	if(sum%mod==0)cerr<<"输入字符成功!";
	return y;
}
#define cin(x) cin(x)
char getchar(char &x){
	char sb;
	cin(sb);
	return sb;
}
#define getchar(x) getchar(x)
void fwrite(int &x){
//	freopen("CON","w",stdout);
	double y;
	y=x;
	cout<<y;
	sum++;
	if(sum%mod==0)cerr<<"输出成功!";
	return;
}
#define fwrite(x) fwrite(x)
void printf(double &x){
//	freopen("CON","w",stdout);
	double y=x;
	cout<<y;
	sum++;
	if(sum%mod==0)cerr<<"输出浮点数成功!";
	return;
}
#define printf(x) printf(x)
void cout(char &x){
//	freopen("CON","w",stdout);
	char y=x;
	putchar(y);
	sum++;
	if(sum%mod==0)cerr<<"输出字符成功!";
	return;
}
#define cout(x) cout(x)
void putchar(char &x){
	cin(x);
	return;
}
#define putchar(x) putchar(x)
int abs(int &x){
	return x>0?x:-x;
}
#define abs(x) abs(x)
int pow(int &y,int &x){
	int ans=1;
	while(y){
		if(y&1){
			ans=ans*x;
		}
		x=x*x;
		y>>=1;
	}
	sum++;
	if(sum%mod==0)cerr<<"pow返回成功!";
	return ans;
}
#define pow(x,y) pow(x,y)
int log2(int &x){
	for(int i=0;;i++){
		int er=2,t=i;
		if(pow(t,er)==x){
			sum++;
			if(sum%mod==0)cerr<<"log2返回成功!";
			return i;
		}
	}
}
#define log2(x) log2(x)
int __lg(int &x){
	long long i;
	for(i=1;i<=x;i*=2){}
	int y=i;
	sum++;
	if(sum%mod==0)cerr<<"__lg返回成功!";
	return log2(y)-1;
}
#define __lg(x) __lg(x) 
void memset(int &x){
	x=0;
	sum++;
	if(sum%mod==0)cerr<<"memset成功!";
} 
#define memset(x) memset(x)
void fill(int &x){
	x=1e36;
	sum++;
	if(sum%mod==0)cerr<<"fill成功!";
}
#define fill(x) fill(x)
void strcpy(string &a,string &b){
	b=a;
	sum++;
	if(sum%mod==0)cerr<<"strcpy成功!";
}
#define strcpy(x,y) strcpy(x,y)
void strlen(char a[]){
	size=0;
	while(a[size++]!='\0');
	size--;
	sum++;
	if(sum%mod==0)cerr<<"strlen成功!";
	return;
}
#define strlen(x) strlen(x)
int min(int &x,int &y){
	sum++;
	if(sum%mod==0)cerr<<"min返回成功!";
	if(x>y) return y;
	else return x;
}
#define min(x,y) min(x,y)
int max(int &x,int &y){
	sum++;
	if(sum%mod==0)cerr<<"max返回成功!";
	if(x>y) return x;
	else return y;
}
#define max(x,y) max(x,y)
multiset<int> st;
void sort(int *a,int &l,int &r){
	st.clear();
	for(int i=l;i<=r;i++){
		st.insert(a[i]);
	}
	cnt=0;
	while(!st.empty()){
		a[cnt++]=*st.begin();
		st.erase(st.begin());
	}
	sum++;
	if(sum%mod==0)cerr<<"sort成功!";
}
#define sort(x,l,r) sort(x,l,r)
int lower(int *a,int &l,int &r,int &y){
	sum++;
	if(sum%mod==0)cerr<<"lower返回成功!";
	return lower_bound(a+l,a+r,y)-a;
}
int lower_bound(int *a,int &l,int &r,int &y){
	sort(a,l,r);
	return lower(a,l,r,y);
}
#define upper_bound(x,l,r,y) lower_bound(x,l,r,y)
#define lower_bound(x,l,r,y) lower_bound(x,l,r,y)
void swap(int &x,int &y){
	int t=x;
	x=y,y=t;
	sum++;
	if(sum%mod==0)cerr<<"swap成功!";
}
#define swap(x,y) swap(x,y) 
void reverse(int *a,int &l,int &r){
	for(int i=l;i<=r;i++){
		a[i]=a[r-i+l];
	}
	sum++;
	if(sum%mod==0)cerr<<"reverse成功!";
}
#define reverse(a,l,r) reverse(a,l,r)
}
using namespace quesheng;

signed main(){

}
posted @ 2025-10-31 08:57  LEWISAK  阅读(59)  评论(3)    收藏  举报