记录编号 |
6800 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Mar03] 奶酪工厂 |
最终得分 |
100 |
用户昵称 |
Folst |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.468 s |
提交时间 |
2008-11-04 17:19:16 |
内存使用 |
0.26 MiB |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
struct BigNum{
int len,num[30];
BigNum(){
len = 1;
memset(num,0,sizeof(num));
}
void Format();
};
ostream& operator<<(ostream& out,const BigNum& a){
for(int i=a.len-1;i>=0;i--)
out<<a.num[i];
return out;
}
void BigNum::Format(){
for(int i=0;i<len;i++){
num[i+1] += num[i]/10;
num[i] %= 10;
}
if(num[len]>0) len++;
}
void operator+=(BigNum& a,int b){
int bLen = (int)log10(double(b)) + 1;
if(a.len<bLen) a.len = bLen;
a.num[0] += b;
a.Format();
}
int main(void){
int n,s;
int Min,C[10010],Y[10010];
BigNum Ans;
int i,j;
ifstream in("factory.in");
ofstream out("factory.out");
in>>n>>s;
for(i=1;i<=n;i++)
in>>C[i]>>Y[i];
for(i=1;i<=n;i++){
Min = C[i];
for(j=1;j<i;j++)
if(C[j]+s*(i-j)<Min) Min = C[j]+s*(i-j);
Ans += Min*Y[i];
}
out<<Ans;
return 0;
}