1 #include 2 #include 3 #include 4 using namespace std; 5 struct jie{ 6 double k; 7 int x,v; 8 }dian[1000005],xian[100005]; 9 long long c[1005],ans[100005];10 bool cmp(jie a,jie b)11 {12 return a.k 0) {18 ret=ret+c[x];19 x-=(x&-x);20 }21 return ret;22 }23 void add(int x,int d)24 {25 while (x<=1000){26 c[x]=c[x]+d;27 x+=(x&-x);28 }29 }30 int main()31 {32 int cnt=0,i,j,T,t,n,A,B,x1,y1,x2,p,d;33 for (i=1;i<=1000;i++)34 for (j=1;j<=1000;j++)35 {36 cnt++;37 dian[cnt].k=1.0*j/i;38 dian[cnt].x=i; dian[cnt].v=j;39 }40 sort(dian+1,dian+cnt+1,cmp);41 scanf("%d",&T);42 for (t=1;t<=T;t++)43 {44 memset(c,0,sizeof(c));45 scanf("%d%d",&A,&B);46 scanf("%d",&n);47 for (i=1;i<=n;i++)48 {49 scanf("%d%d%d",&x1,&y1,&x2);50 xian[i].k=1.0*y1/x1;51 xian[i].x=x2; xian[i].v=i;52 }53 sort(xian+1,xian+n+1,cmp);54 p=1;55 for (i=1;i<=n;i++)56 {57 while (dian[p].k<=xian[i].k&&p<=cnt) {58 d=(dian[p].x+A)*(dian[p].v+B);59 add(dian[p].x,d);60 p++;61 }62 ans[xian[i].v]=sum(xian[i].x);63 }64 printf("Case #%d:\n",t);65 for (i=1;i<=n;i++) printf("%I64d\n",ans[i]);66 }67 }