Pagini recente »
Atașamentele paginii Clasament 2018-11-22-clasa-6-tema-10
|
Monitorul de evaluare
|
Istoria paginii runda/2018-02-18-test-5/clasament
|
Istoria paginii utilizator/rarres
|
Cod sursă (job #462986)
Cod sursă (job
#462986)
#include <stdio.h>
#define MAX 50000
FILE *fin,*fout;
unsigned v[MAX/32+2];
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;
}
v[a]=aux;
while(j<=d && l==i){
setBit(c-1,bit,i);
fscanf(fin,"%d%d%d",&l,&c,&bit);
j++;
}
}
for(a=0; a<=(n-32)/32; a++)
for(i=0; i<32; i++){
fprintf(fout,"%u ",v[a]&1);
v[a]>>1;
}
for(i=0; i<n-a*32; i++){
fprintf(fout,"%u ",v[a]&1);
v[a]>>1;
}
fclose(fin);
fclose(fout);
return 0;
}