Afişează mesaje
|
Pagini: [1] 2 3 ... 10
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1226 Planificare
|
: Ianuarie 30, 2012, 11:37:21
|
Am descoperit ca problema era de la . Acolo vreau sa sterg emisiunea la care o leg pe cea curenta (ca sa nu imi mai ramana in multiset si sa nu pot lega alte emisiuni de aceeasi emisiune). De la instructiunea aceea primesc KBS 6 SIGABRT. Se poate modifica valoarea de la adresa it intr-una cat mai mare ca sa evit problema fara sa folosesc functia erase()?
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1226 Planificare
|
: Ianuarie 27, 2012, 18:37:27
|
#include <iostream> #include <fstream> #include <cstdio> #include <algorithm> #include <set>
using namespace std;
const char iname[] = "planificare.in"; const char oname[] = "planificare.out"; multiset <int> spectacol; multiset <int>::iterator it;
ifstream fin(iname); ofstream fout(oname);
int n , k;
struct timp { int final, start; };
timp t[100002]; int ap[100002];
struct cmp { bool operator()(const timp &i, const timp &j)const { if(i.final > j.final) return 0; else if(i.final == j.final) if(i.start > j.start) return 0; return 1; } };
int main() { fin >> n >> k; for(int i = 1; i <= n; i ++) fin >> t[i].start >> t[i].final; int ct = 1; int pred = 0; sort(t + 1, t + n + 1, cmp()); spectacol.insert(t[1].final); int i = 0, ocupate = 1; for(i = 2; i <= n; i ++) { it = spectacol.lower_bound(t[i].start); if(it != spectacol.begin() && *it > t[i].start) --it; if(*it < 0) it = spectacol.begin(); if(*it <= t[i].start && *it > 0) { spectacol.insert(t[i].final); spectacol.erase(it); ++ct; } else if(ocupate < k) { ocupate ++; spectacol.insert(t[i].final); ++ct; } }
fout << ct << "\n"; return 0; }
|
|
|
8
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1226 Planificare
|
: Ianuarie 27, 2012, 10:14:39
|
As avea nevoie de putin ajutor la codul acesta : fin >> n >> k; for(int i = 1; i <= n; i ++) fin >> t[i].start >> t[i].final; int ct = 1; int pred = 0; sort(t + 1, t + n + 1, cmp()); spectacol.insert(t[1].final);
Primesc segmentation fault la linia cu spectacol.insert(t[1].final) Are cineva vreo idee de ce se intampla asta? T e o structura cu final de tip int ... si multisetul e declarat multiset<int> spectacol;
|
|
|
17
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 032 Flux maxim
|
: Aprilie 14, 2011, 15:55:12
|
Aveti idee de ce imi da Incorect la 5,6,7,9? Folosesc ideea de pe topcoder. Sursa mea: http://infoarena.ro/job_detail/498661?action=view-sourceEdit: Dupa 3 luni , am gasit greseala: C[y][ x]=0. Am omis si eu faptul ca pot exista arcele x->y si y->x in acelasi timp. Totusi din enunt ("Intre oricare doua noduri x si y exista maxim un arc.") nu prea reiese asta. Sau daca reiese, e mult prea subtil. Pai arcele inverse nici nu exista. ) Alea le pui tu (sunt inaginare, de aia au capacitatea 0) ca sa te poti intoarce pe ele si sa gasesti alte drumuri de ameliorare. (ca fluxul sa fie maxim).
|
|
|
|