这是本文档旧的修订版!
灵感来源于多校第五场的K题。同样是大作业一样的题目,与之前不同的是,本次的题目有标程。
与其他人一起编写代码有时意味着浪费时间——至少你会花很多时间来合并不同的分支并测试它们是否存在潜在的bug。有时,git标记的区别只是不同的编码风格!
#include <bits/stdc++.h> int main() { <<<<<<< branch1 printf("Hello world!"); ======= puts("Hello World!"); >>>>>>> branch2 }
下面是一个合并helloworld的例子。branch1上的一个使用printf,但是第二个程序员更喜欢puts。好吧,解决这个问题的一个办法是,在不同的预设开启时,做一些适当的定义,让事情正常运作。最简单的方法之一是将git的标记改为define,也就是说:
#include <bits/stdc++.h> int main() { #ifdef branch1 printf("Hello world!"); #else puts("Hello World!"); #endif }
然而,有时git不会标记一个精确的范围,以简单的方式替换标记不会得到一个最短的答案。如果add定义不同,以下代码可能会更短。
#include <bits/stdc++.h> using namespace std; int main() { int a, b; <<<<<<< branch1 cin >> a >> b; ======= scanf("%d%d", &a, &b); >>>>>>> branch2 if (a < 0 || b < 0) return 1; <<<<<<< branch1 cout << a + b << endl; ======= printf("%d\n", a + b); >>>>>>> branch2 }
你的任务是输出一些最短的合并答案,一些C++代码。
#ifdef branch1 #ifdef branch2 #else #endif
输入文件最多包含4000行代码或git标记,每行最多256个字节,包括“\n”。
当然,至少有一个冲突和至少一个代码行。
输出具有最少行数的代码,当不同的定义on时,将与两个分支完全匹配。如果有多个答案,请打印任何答案。
检查器将尝试修复一些令人不快的问题,包括忽略行尾的空格和文件末尾的额外换行符。不过,建议您将答案以样本格式输出,以避免由于呈现错误而导致的错误答案。
输出必须少于5000行,每行最多300字节,包括'\n'。否则,您将收到错误的答案判决。
样例一:
#include <bits/stdc++.h> using namespace std; int main() { int a, b; <<<<<<< branch1 cin >> a >> b; ======= scanf("%d%d", &a, &b); >>>>>>> branch2 if (a < 0 || b < 0) return 1; <<<<<<< branch1 cout << a + b << endl; ======= printf("%d\n", a + b);a >>>>>>> branch2 }
#include <bits/stdc++.h> using namespace std; int main() { int a, b; #ifdef branch1 cin >> a >> b; if (a < 0 || b < 0) return 1; cout << a + b << endl; #else scanf("%d%d", &a, &b); if (a < 0 || b < 0) return 1; printf("%d\n", a + b);a #endif }
样例二:
<<<<<<< branch1 int main() { return 0; } ======= int main() { } >>>>>>> branch2
int main() { #ifdef branch1 return 0; #endif }
样例三:
<<<<<<< branch1 int main() {} ======= int main() {} >>>>>>> branch2
int main() {}
以输入文件2为例,让我们来验证输入文件的格式是否正确:
“«««< branch1\nint main() {\n return 0;\n}\n=======\nint main() {\n}\n»»»> branch2\n”
一个可能的输出(作为样本输出2)是:
“int main() {\n#ifdef branch1\n return 0;\n#endif\n}\n”
请注意,如果在Windows上运行测试,则在使用getline()时必须注意到“\r”问题。测试数据将不包含任何'\r'。