Pagini recente »
Istoria paginii runda/simulare_13
|
Istoria paginii utilizator/eugen5092
|
Statistici Cotruta Smaranda Maria (smarandacotruta)
|
Borderou de evaluare (job #470147)
|
Cod sursă (job #120533)
Cod sursă (job
#120533)
#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;
}
}
while (d && l == n) {
set(c - 1, valoare);
fscanf(in, "%d %d %d", &l, &c, &valoare);
d--;
}
fclose(in);
out = fopen("beculete.out", "w");
for (i = 0; i < n; i++)
fprintf(out, "%d ", get(i));
fclose(out);
return 0;
}