Looks good, the way words_count gets incremented is clever. Here's a way you could optimize it slightly by losing the "found" and "place" variables, so there is slightly less copying and testing:
Code:
while (cin >> x )
{
size = words.size ();
for (teller = 0; teller < size; teller ++)
{
if (x == words [teller])
{
words_count [teller] +=1 ;
teller = -1;
break;
}
}
if (teller < 0) continue;
words.push_back (x) ;
words_count.push_back (1) ;
}
"Break" ends a loop (since it's done at that point) and "continue" proceeds to the next iteration, skipping the remaining code in the loop.