Pagini recente »
Rating Radu Tudor Cristian (tudor27_)
|
Clasament 9_1
|
Rating Alina Curlat (Alina)
|
Borderou de evaluare (job #676875)
|
Cod sursă (job #418453)
Cod sursă (job
#418453)
/**
* Algoritm: în ziua de târg, sortăm lalelele ținând cont de ziua și înălțimea
* în momentul plantării.
*/
#include <algorithm>
#include <stdio.h>
#define MAX_N 5000000
typedef struct {
int d; // ziua plantării
int h; // înălțimea la plantare
} tulip;
tulip t[MAX_N];
bool tulipCmp(tulip a, tulip b) {
return (a.h - a.d < b.h - b.d);
}
int main(void) {
int day, numDays, run, event;
int n = 0;
FILE *fin = fopen("lalele.in", "r");
FILE *fout = fopen("lalele.out", "w");
fscanf(fin, "%d", &numDays);
day = 0;
while (day < numDays) {
fscanf(fin, "%d %d", &run, &event);
while (run--) {
if (event) {
// zi normală
t[n++] = { day, event };
} else {
// zi de târg
std::sort(t, t + n, tulipCmp);
fprintf(fout, "%d\n", day - t[n / 2].d + t[n / 2].h);
n /= 2;
}
day++;
}
}
fclose(fin);
fclose(fout);
}