starfallen @ 2023-09-29 20:15:04
%:include<bits/stdc++.h>
using namespace std;
struct node<%int a,b;%>;
int n;
node* a<:100:>;
int main()<%
ios_base::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;++i) cin>>a<:i:>->a>>a<:i:>->b;
sort(&a<:1:>,&a<:n+1:>,<::>(auto a,auto b)<%return a->a!=b->a?a->a<b->a:a->b<b->b;%>);
while(n--) cout<<a<:n+1:>->a<<' '<<a<:n+1:>->b<<endl;
return 0;
%>
一时兴起写的抽象代码
(用时1min)
by NEKO_Daze @ 2023-09-29 20:16:02
虽然但是,CCF有可能会这么玩(乱想
by zhanglh @ 2023-09-29 20:16:32
假设CCF的阅读程序题变成这样
#ifdef
AC正规的线段树写法
#endif
#include <cstdio>
#include <iostream>
namespace def
{
#define 换行 '\n'
#define 如果 if
#define 否则 else
#define 循环 for
#define 左儿子(i) i 座椅 1
#define 右儿子(i) i 座椅 1 | 1
#define 线段树 SegmentTree
#define 整数 int
#define 长整数 long long
#define 使用 using
#define 结构体 struct
#define 常量 const
#define 无返回类型 void
#define 返回 return
#define 或 ||
#define 且 &&
#define 零 0
#define 龟速输入 cin
#define 龟速输出 cout
#define 加1 ++
#define 是 =
#define 真是 ==
#define 加上 +=
#define 加 +
#define 座椅 <<
#define 友谊 >>
#define 大鱼等于 >=
#define 大鱼 >
#define 乘上 *
#define 壹 1
#define 贰 2
#define 伍 5
#define 小鱼等于 <=
#define 引用 &
#define 主函数 main
#define 有符号整数 signed
#define 壹yee伍 1e5
#define 爱斯提地 std
#define 命名空间 namespace
#define 减去 -
#define 小鱼 <
#define 的成员 .
}
使用 命名空间 爱斯提地;
常量 整数 数组大小 是 壹yee伍 加 伍;
长整数 序列[数组大小];
命名空间 线段树
{
结构体 线段树类型
{
整数 左端点, 右端点;
整数 长度() 常量
{
返回 右端点 减去 左端点 加 壹;
}
整数 懒标记;
长整数 和;
};
线段树类型 节点[数组大小 座椅 贰];
无返回类型 区间加操作(线段树类型 引用 更改节点, 长整数 增值)
{
更改节点 的成员 和 加上 增值 乘上 更改节点 的成员 长度();
更改节点 的成员 懒标记 加上 增值;
}
无返回类型 下传懒标记(整数 编号)
{
如果(节点[编号] 的成员 懒标记 大鱼 零)
{
区间加操作(节点[左儿子(编号)], 节点[编号] 的成员 懒标记);
区间加操作(节点[右儿子(编号)], 节点[编号] 的成员 懒标记);
节点[编号] 的成员 懒标记 是 零;
}
}
无返回类型 建树(整数 编号, 整数 区间左端点, 整数 区间右端点)
{
节点[编号] 的成员 左端点 是 区间左端点;
节点[编号] 的成员 右端点 是 区间右端点;
如果(区间左端点 真是 区间右端点)
{
节点[编号] 的成员 和 是 序列[区间左端点];
返回 无返回类型();
}
整数 中点 是 (区间左端点 加 区间右端点) 友谊 壹;
建树(左儿子(编号), 区间左端点, 中点);
建树(右儿子(编号), 中点 加 壹, 区间右端点);
节点[编号] 的成员 和 是 节点[左儿子(编号)] 的成员 和 加 节点[右儿子(编号)] 的成员 和;
}
无返回类型 更新(整数 编号, 整数 修改区间左端点, 整数 修改区间右端点, 长整数 增值)
{
如果(节点[编号] 的成员 左端点 大鱼 修改区间右端点 或 节点[编号] 的成员 右端点 小鱼 修改区间左端点)
返回 无返回类型();
如果(节点[编号] 的成员 左端点 大鱼等于 修改区间左端点 且 节点[编号] 的成员 右端点 小鱼等于 修改区间右端点)
返回 区间加操作(节点[编号], 增值);
下传懒标记(编号);
更新(左儿子(编号), 修改区间左端点, 修改区间右端点, 增值);
更新(右儿子(编号), 修改区间左端点, 修改区间右端点, 增值);
节点[编号] 的成员 和 是 节点[左儿子(编号)] 的成员 和 加 节点[右儿子(编号)] 的成员 和;
}
长整数 查询(整数 编号, 整数 查询区间左端点, 整数 查询区间右端点)
{
如果(节点[编号] 的成员 左端点 大鱼 查询区间右端点 或 节点[编号] 的成员 右端点 小鱼 查询区间左端点)
返回 零;
如果(节点[编号] 的成员 左端点 大鱼等于 查询区间左端点 且 节点[编号] 的成员 右端点 小鱼等于 查询区间右端点)
返回 节点[编号] 的成员 和;
下传懒标记(编号);
返回 查询(右儿子(编号), 查询区间左端点, 查询区间右端点) 加 查询(左儿子(编号), 查询区间左端点, 查询区间右端点);
}
}
整数 序列长度, 操作次数;
使用 命名空间 线段树;
整数 主函数()
{
龟速输入 友谊 序列长度 友谊 操作次数;
循环(整数 枚举项 是 壹; 枚举项 小鱼等于 序列长度; 枚举项 加1)
龟速输入 友谊 序列[枚举项];
建树(壹, 壹, 序列长度);
循环(整数 枚举项 是 壹; 枚举项 小鱼等于 操作次数; 枚举项 加1)
{
整数 操作编号, 操作左端点, 操作右端点;
龟速输入 友谊 操作编号 友谊 操作左端点 友谊 操作右端点;
如果(操作编号 真是 壹)
{
长整数 增值;
龟速输入 友谊 增值;
更新(壹, 操作左端点, 操作右端点, 增值);
}
否则
龟速输出 座椅 查询(壹, 操作左端点, 操作右端点) 座椅 换行;
}
返回 零;
}
不是我写的别打我
by Pol_Pot @ 2023-09-29 20:16:51
为什么这句可以过编译啊
%:include<bits/stdc++.h>
by starfallen @ 2023-09-29 20:29:25
@Koji_Tasho 有着一种神奇的东西叫做助记符,它定义了%:为#
by Magus @ 2023-09-29 20:30:14
6
by jyz2012 @ 2023-09-30 09:13:24
6