Cod sursă (job #356792)

Utilizator avatar FaneCelMare Steven FaneCelMare IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 1,58 kb
Rundă Arhiva de probleme Status evaluat
Dată 26 feb. 2018 16:37:14 Scor 20
#include <fstream>
#include <vector>
using namespace std;
struct lalea{
    int h;
    int day;
};
vector <lalea> v;
/*
void dump(string pf, int days, ofstream& o) {
    o << pf << "-" << days <<": " << v.size() << ": ";
    for (int i = 0; i < v.size(); i++) {
        o << v[i].day << "/" << v[i].h << "/" <<  v[i].h + days -  v[i].day << "  ";
    }
    o << endl;
}
*/
int main()
{
    int n, d, x, i, cd, j, size, days;
    lalea l;
    ifstream in("lalele.in");
    ofstream out("lalele.out");
    in >> n;
    days = 0;
    v.reserve(n);
    while (n > 0) {
        in >> d;
        in >> x;
        cd = d;
        if (x > 0) {
            while (d > 0) {
                l.day = days;
                l.h = x;
                days++;
                d--;
                v.push_back(l);
            }
        } else {
            size = v.size();
            for (i = 0; i < size - 1; i++) {
                for (j = i + 1; j < size; j++) {
                    if (v[i].h - v[i].day > v[j].h - v[j].day) {
                        l = v[i];
                        v[i] = v[j];
                        v[j] = l;
                    }
                }
            }
            while (d > 0) {
 //               dump("Db", days, out);
                i = v.size() / 2;
                x = v[i].h + days - v[i].day;
                out << x << endl;
                v.resize(v.size()/2);
                d--;
      //          dump("Db2", days, out);
                days++;
            }
        }
        n -= cd;
    }


    return 0;
}