#include<cstdio>
#include<map>
#include<vector>
#include<string>
#include<iostream>
using namespace std;
#define up(i,a,b) for(int i=(a);i<=(b);++i)
//宏定义
int n,m;
map<string,vector<int> >mp;
int main(){
scanf("%d",&n);
up(i,1,n){
int l;
scanf("%d",&l);
up(j,1,l){
string s;
cin>>s;
if(!mp[s].size()||mp[s][mp[s].size()-1]!=i)
mp[s].push_back(i);
}
}
scanf("%d",&m);
up(i,1,m){
string s;
cin>>s;
// for(int j=0;j<mp[s].size();++j)//AC
// up(j,0,mp[s].size()-1)//本来想用
for(int j=0;j<=mp[s].size()-1;++j)//改了,等价,不是define的问题
{
printf("%d\n",j);
printf("%d\n",mp[s].size()-1);
printf("%d\n",((j)<=(mp[s].size()-1)));
printf("%d\n",0<=-1);
printf("%d ",mp[s][j]);
}
puts("");
}
return 0;
}
问题在于m那个循环的第二层J,当mp[s].size()=0时,使用标注AC的那行就不执行循环,使用下面的就会执行循环
四个printf分别输出
0
-1
1
0
奇怪的不得了