Pagini recente »
Istoria paginii utilizator/savarares
|
Monitorul de evaluare
|
Monitorul de evaluare
|
Monitorul de evaluare
|
Cod sursă (job #120531)
Cod sursă (job
#120531)
#include <stdio.h>
#include <stdlib.h>
#define MAX 1563
unsigned bit[MAX];
void set(int i, int x) {
int mask;
mask = ~(1 << (31 - (i & 31)));
bit[i >> 5] = (bit[i >> 5] & mask) ^ (x << (31 - (i & 31)));
}
int get(int i) {
return ((bit[i >> 5] >> ( 31 - (i & 31))) & 1);
}
int main()
{
int n, d, l, c;
int valoare;
unsigned mask = 0;
unsigned maskhelper = 0;
int lim;
int i;
int j;
FILE *in;
FILE *out;
in = fopen("beculete.in", "r");
fscanf(in, "%d %d %d %d %d", &n, &d, &l, &c, &valoare);
set(0, 1);
for (i = 1; i < n; i++) {
lim = (i >> 5) + 1;
while (i == l && d) {
set(c - 1, valoare);
fscanf(in, "%d %d %d", &l, &c, &valoare);
d--;
}
for (j = 0; j < lim; j++) {
mask = (maskhelper << 31) | (bit[j] >> 1);
maskhelper = bit[j] & 1;
bit[j] ^= mask;
}
}
fclose(in);
out = fopen("beculete.out", "w");
for (i = 0; i < n; i++)
fprintf(out, "%d ", get(i));
fclose(out);
return 0;
}