今天准备熟悉一下codejam的在线编程,为google的笔试做准备,因此按照codejam上对新手的建议,先用了一个简单的题目来弄清楚流程。记录一下需要注意的地方。
1.输入输出
输入输出重定位即可,拿Minimum Scalar Product这个例子示例如下:
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <cstdio>
using namespace std; int main()
{
freopen("A-large-practice.in","r",stdin);
freopen("output.in","w",stdout); int caseNum;
int curVectorLen;
typedef long long longType;
longType curTotal;
cin>>caseNum;
for(int i=0;i<caseNum;++i)
{
cin>>curVectorLen; vector<int> vec1(curVectorLen,0);
vector<int> vec2(curVectorLen,0); for(int j=0;j<curVectorLen;j++)
{
cin>>vec1[j];
} for(int j=0;j<curVectorLen;j++)
{
cin>>vec2[j];
} sort(vec1.begin(),vec1.end());
sort(vec2.begin(),vec2.end()); curTotal=0LL;
for(int j=0;j<curVectorLen;++j)
{
curTotal+=(longType)vec1[j]*vec2[curVectorLen-1-j];
} cout<<"Case #"<<i+1<<": "<<curTotal<<endl; } return 0;
}
可知,平时的OJ环境默认输出现在转到了文件读取和写入。转换的关键代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <cstdio>
using namespace std; int main()
{
freopen("A-large-practice.in","r",stdin);
freopen("output.in","w",stdout); //正常的cin和cout
return 0;
}
2.关于Minimum Scalar Product
注意溢出问题就好了。两个int类型乘的时候注意强制类型转换一下。