Pagini recente »
Atașamentele paginii Clasament 2019-01-24-clasa-6-tema-16
|
utilizator/tzepu
|
Atașamentele paginii 2022-03-18-clasa-6-tema-21
|
Cod sursă (job #159136)
|
Cod sursă (job #474233)
Cod sursă (job
#474233)
#include <stdio.h>
#define MAX 50000
FILE *fin,*fout;
unsigned v[MAX/32+2];
int getBit(int poz){
unsigned x=v[poz>>5]; //poz/32
int y=poz&((1<<5)-1); //poz%32
return (x>>y)&1;
}
void setBit(int poz, int b, int i){
int x=poz>>5;
int y=poz&((1<<5)-1);//poz%32
v[x]&=(~(1<<y)); //setez bitul y pe 0
v[x]|=(b<<y); //ii dau bitului y valoarea b
}
int main(){
fin=fopen("beculete.in","r");
fout=fopen("beculete.out","w");
int n,d,l,c,bit,i,j,a,b,aux;
unsigned mask;
fscanf(fin,"%d%d",&n,&d);
if(d)
fscanf(fin,"%d%d%d",&l,&c,&bit);
j=v[0]=1;
for(i=2; i<=n; i++){
b=0;
for(a=0; a*32<=i; a++){
aux=v[a]>>31;
mask=(v[a]<<1)+b;
v[a]^=mask;
b=aux&1;
}
v[a]=aux;
while(j<=d && l==i){
setBit(c-1,bit,i);
fscanf(fin,"%d%d%d",&l,&c,&bit);
j++;
}
}
for(i=0; i<n; i++)
fprintf(fout,"%d ",getBit(i));
fclose(fin);
fclose(fout);
return 0;
}