Cod sursă (job #415661)

Utilizator avatar AndreiCroitoru Andrei Croitoru AndreiCroitoru IP ascuns
Problemă Beculețe (clasele 9-10) Compilator cpp | 1,15 kb
Rundă Arhiva de probleme Status evaluat
Dată 3 ian. 2019 21:22:32 Scor 30
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("beculete.in");
ofstream out("beculete.out");
char v1[50005],v2[500001];
struct defect {
    int x, y;
    char ch;
};
bool comp(defect b, defect a)
{
    if(a.x>b.x)
        return true;
    return false;
}
defect def[10005];
int main()
{
    int n, d,i ,j;
    in>>n>>d;
    v2[1]=1;
    for(i=1; i<=d; i++)
    {
        in>>def[i].x>>def[i].y>>def[i].ch;
        def[i].ch-='0';
    }
    sort(def+1, def+d+1, comp);
    int poz=1;
    for(i=2; i<=n; i++)
    {
        for(j=1; j<=i-1; j++)
        {
            v1[j]=v2[j];
            v2[j]=2;
        }
        v2[i]=2;
        while(poz<=d && def[poz].x==i)
        {
            v2[def[poz].y]=def[poz].ch;
            poz++;
        }
        for(int j=1; j<=i; j++)
        {
            if(v2[j]==2)
            {
                if(v1[j]^v1[j-1])
                {
                    v2[j]=1;
                }
                else
                    v2[j]=0;
            }
        }
    }
    for(i=1; i<=n; i++)
    {
        out<<(char)(v2[i]+'0')<<" ";
    }
    return 0;
}