Create a specific order of paginated entries by entry type I am working with a design that requires entries to be laid out on a listing page in a specific order based on whether they are "Standard" or "Premium". The order of the paginated listing page is as follows:


Standard, Standard,  Premium
Standard, Standard, Standard, Standard
Premium, Standard, Standard
Standard, Standard, Standard, Standard
Pagination


There could be a number of approaches with how I store the entries but my approach has been to set up a channel section "Offers" with two entry types "Standard" and "Premium". If the layout was not important I have the following working:

{% paginate craft.entries.section('offers').limit(14) as pageInfo, pageEntries %}

{% for entry in pageEntries %}
  {% if entry.type == 'premium' %}
    {% include "_includes/offers/listing-card-premium" %}
  {% endif %}
  {% if entry.type == 'standard' %}
    {% include "_includes/offers/listing-card" %}
  {% endif %}
{% endfor %}

{# PAGINATIOIN NAV HERE #}


My question is, how do I achieve the above but using the specific order I need, whilst still paginating the entries and keeping track of what's been displayed.
If I get you right, you want to exclude the premium entries from the others? Carefull, code is not tested ;)

{% set premiumEntries = craft.entries({
    section: 'offers',
    entry-type: 'premium',
    order: 'postDate desc'
}) %}

{% set standardEntries = craft.entries({
    section: 'offers',
    entry-type: 'standard',
    order: 'postDate desc'
}) %}


Then you need to do a loop to merge the standard to the premium. 
Something like this
Merge two arrays of ElementModels?

... and finally paginate trough all of them. 
Hope that helps.