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(){
}

浙公网安备 33010602011771号