Cod sursă (job #491898)

Utilizator avatar Vasilescu_Cosmin Vasilescu Cosmin Vasilescu_Cosmin IP ascuns
Problemă Beculețe (clasele 9-10) Compilator cpp | 1,22 kb
Rundă Arhiva de probleme Status evaluat
Dată 11 oct. 2019 10:22:41 Scor 0
#include <bits/stdc++.h>
using namespace std;

ifstream in("beculete.in");
ofstream out ("beculete.out");

struct bec{
    int linie;
    int coloana;
    bool valoare;
};

bool sortare (bec a, bec b)
{
    if(a.linie != b.linie)
        return a.linie<b.linie;
    return a.coloana<b.coloana;
}

bool lum[3][50005];

int main()
{
    bec v[50];
    int n,d,i,l,c,va,lmin=INT_MAX,k,l1,j;
    in>>n>>d;
    for(i=1; i<=d; i++)
    {
        in>>l>>c>>va;
        v[i].linie=l;
        v[i].coloana=c;
        v[i].valoare=va;
        lmin=min(l,lmin);
    }
    sort(v+1,v+d+1, sortare);k=1;
    l1=pow(2,int(log10(lmin)/log10(2)));
    for(i=1; i<=l1; i++)
    {
        if(v[k].linie==l1 && v[k].coloana==i)
            lum[1][i]=v[k].valoare,k++;
        else
            lum[1][i]=1;
    }
    for(i=l1+1; i<=n; i++)
    {
        for( j=2; j<=i-1; j++)
        {
            if(lum[1][j-1]+lum[1][j]==1)
                lum[2][j]=1;
            else
                lum[2][j]=0;
        }
        lum[2][1]=lum[1][1];
        lum[2][i]=lum[1][i-1];
        for(j=1; j<=i; j++)
            lum[1][j]=lum[2][j];
    }
    for(i=1; i<=n; i++)
        out<<lum[2][i]<<" ";
    return 0;
}