Ho provato, in effetti il codice ordina correttamente tutti gli elementi, quindi non so se serve postarlo, eccolo cmq per curiosità, l'ho riscritto:

codice:
#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int N;

typedef struct struttura
    {
    int inizio;
    int fine;  
    };
    
struttura giri [1000];

bool cmp (const struttura & a, const struttura & b)
{
if (a.fine < b.fine)
    return true;
else 
    return false;
}

int main(int argc, char *argv[])
{
    ifstream in("input.txt");
    in >> N;
    for(int i = 0; i < N; i++)
        { 
        in >> giri[i].inizio >> giri[i].fine;
        }
    in.close();
    ///////////////////////////////
    
    sort(giri, giri + N, cmp);
    
    int fine_corr = giri[0].fine;
    int caramelle = 1;
    
    for(int i = 1; i < N; i++)
        {
        if(fine_corr < giri[i].inizio)
            {
            caramelle++;
            fine_corr = giri[i].fine;
            }    
        }
    ///////////////////////////////
    ofstream out("output.txt");
    
    out << caramelle;
    
    out.close();
    return EXIT_SUCCESS;
}
il codice serve per risolvere (correttamente) il problema:

Olimpiadi di Informatica - Selezione Regionale 2007
problema Giri sulla Scopa Nimbus3000 (NIMBUS)

ma poco conta ai fini del mio problema