Cod sursă (job #415879)

Utilizator avatar AndreiCroitoru Andrei Croitoru AndreiCroitoru IP ascuns
Problemă Beculețe (clasele 9-10) Compilator cpp | 0,96 kb
Rundă Arhiva de probleme Status evaluat
Dată 4 ian. 2019 18:29:35 Scor 100
#include <fstream>
using namespace std;
unsigned v[50005];
ifstream in("beculete.in");
ofstream out("beculete.out");
int n,d,l,c,val,valfin;
int valoare(int x)
{
    return (v[x>>5]>>(x&31))&1;
}
void prim(int x,int bit)
{
    unsigned mask=~(1<<(x&31));
    v[x>>5]=(v[x>>5]&mask)^(bit<<(x&31));
}
void transf(int n)
{
    for(int i=n/32+1; i>=1; i--)
    {
        v[i]^=v[i]<<1;
        v[i]^=v[i-1]>>31;
    }
    v[0]^=v[0]<<1;
}
int main()
{
    in>>n>>d;
    prim(0,1);
    for(int i=1; i<n; i++)
    {
        valfin=valoare(i-1);
        transf(i);
        prim(i,valfin);
        while(l<=i)
        {
            if(l==i)
                prim(c,val);
            if(d)
            {
                in>>l>>c>>val;
                l--;
                c--;
                d--;
            }
            else
                l=n;
        }
    }
    for(int i=0; i<n; i++)
        out<<valoare(i)<<' ';
    return 0;
}