Yes, use UTM or URL parameters as part of this system. If you are directing your ads to the same place, then this works well with 1 program and page and form. You should have fields that are able to track the various codes and keywords unraveled by the utms or gclid.
I would break up your Campaigns or Groups into separate Programs if you are sending people to different Offers.
To track individual ads, you will have to tag each link with a uniqu AdID. You can then use SFDC or Marketo Smart Lists to report on this.
I also have a similar query, can you tell me how to approach for the below use case.
My client is running some SEM campaigns and if anyone clicks the ads they will come to a Marketo landing page.
What is the setup i have to do to know if 100 contacts visited that landing page, i want to know how many came from that SEM campaign.
Please let me know your comments.