醉了,一開始錯是因爲把≤1000看成了<1000,結果5個樣例錯3個,改過來就A了
//1009
double a[1005],b[1005],c[2005];
int main(){
int n,m,t1;
double t2;
while(scanf("%d",&n)!=EOF){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
while(n--){
scanf("%d %lf",&t1,&t2);
a[t1] = t2;
}
scanf("%d",&m);
while(m--){
scanf("%d %lf",&t1,&t2);
b[t1] = t2;
}
for(int i=0;i<=1000;i++)
for(int j = 0;j<=1000;j++)
c[i+j] += a[i]*b[j];
int cnt = 0;
for(int i=0;i<=2000;i++)
{
if(c[i]) cnt++;
}
if(!cnt) printf("0\n");
else {
printf("%d",cnt);
for(int i=2000;i>=0;i--)
{
if(c[i]) printf(" %d %0.1f",i,c[i]);
}
printf("\n");
}
}
return 0;
}