int main()
{
long int i,t,n,q[500],d[500],s[500],res[500]={0},j,h;
scanf("%ld",&t);
while(t--)
{
scanf("%ld %ld",&n,&h);
for(i=0;i<n;i++)
scanf("%ld %ld",&d[i],&s[i]);
for(i=0;i<h;i++)
scanf("%ld",&q[i]);
for(i=0;i<h;i++)
{
for(j=0;j<n;j++)
{
res[j]=d[j]+q[i]*s[j];
}
j=cal(res,n,q[i],s);
printf("%ld\n",j);
}
}
return 0;
}
long int cal(int res[],int n,int q,int s[])
{
long int i,max=0,p,pos=0;
for(i=0;i<n;i++)
{
if (max==res[i])
{
pos=add(res,s,pos,i,q);
max=res[pos];
}
if (res[i]>max)
{
max=res[i];
pos=i;
}
}
return pos;
}
変数を として取っているときはいつでもint
正常に動作していますが、変数を として宣言している場合long int
、関数呼び出しで「疑わしいポインター変換」として警告メッセージが表示されます — 次の行で:
(j=cal(res,n,q[i],s));
理由を教えてください。