Cod sursa(job #1707889)

Utilizator acer18Herta Alina acer18 Data 26 mai 2016 01:13:42
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
//#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
 
ifstream fi("segmente.in");
ofstream fo("segmente.out");
struct segm{
	int x,y,ind;
};
bool comp(segm a,segm b){ return a.x < b.x || (a.x == b.x && a.y < b.y);}
int n;
segm a[10001];
int RS[10010],rs;
 
void greedy()
{
    int pred,i,k = 1;
    RS[++rs] = a[0].ind;
    for (pred=0,i=1;i<n;++i){
       // fo << a[i].x << ' ' << a[i].y << '\n';
		if (a[pred].y<a[i].x) RS[++rs] = a[i].ind,pred = i;
		else if(a[pred].y > a[i].y) pred = i,RS[rs] = a[i].ind;
	}
	for(int i = 1;i<=rs;i++) fo << RS[i]+1 << ' ';
}
 
int main()
{
    int punct;
	int i;
    fi>>n;
    for (i=0;i<n;++i)
    {
        fi>>a[i].x;
        fi>>a[i].y;
		a[i].ind = i;
	}
   
    //Qsort(0, n-1);
    sort(a, a+n, comp);
    fo<<"Segmentele optime:";
    greedy();
    
    return 0;
}