Cod sursă (job #130138)

Utilizator avatar horiainfo Horia T horiainfo IP ascuns
Problemă Beculețe (clasele 9-10) Compilator cpp | 1,37 kb
Rundă Arhiva de probleme Status evaluat
Dată 6 mar. 2015 12:59:33 Scor 30
#include <fstream>
#include <cstdio>
#include <bitset>
#include <string>
#define NMAX 50001
using namespace std;
ofstream fout("beculete.out");
int n,i,l,c,d,k;
bool v;
string s;
bitset<NMAX> b1,b2;

void cons(bitset<NMAX> &b1,bitset<NMAX> &b2,int lg)
{
    //b2.reset();
    if(b1[0]==1)
        b2.set(0,1);
    else b2.set(0,0);
    for(int i=1;i<lg-1;i++)
        b2.set(i,b1[i-1]^b1[i]);
    if(b1[lg-2]==1)
        b2.set(lg-1,1);
    else    b2.set(lg-1,0);
}
void afis(bitset<NMAX> b)
{
   for(int i=0;i<n;i++)
        fout<<b[i]<<' ';
       /* s=b.to_string();
        fout<<s;*/
}
int main()
{
    freopen("beculete.in","r",stdin);
    scanf("%d%d",&n,&d);
    b1.set(0,1);
    scanf("%d%d%d",&l,&c,&v);
    k=1;
    for(int i=2;i<=n;i++)
    {
        if(i%2==0)
        {
            cons(b1,b2,i);
            while(l==i && k<=d)
            {
                b2.set(c-1,v);
                k++;
                if(k<=d)
                    scanf("%d%d%d",&l,&c,&v);
            }
        }
        else
        {
            cons(b2,b1,i);
            while(l==i && k<=d)
            {
                b1.set(c-1,v);
                k++;
                if(k<=d)
                    scanf("%d%d%d",&l,&c,&v);
            }
        }
    }
    if(n%2==0)
        afis(b2);
    else
        afis(b1);
    return 0;
}