Cod sursă (job #578846)

Utilizator avatar RedFiree Alex Prohnitchi RedFiree IP ascuns
Problemă Beculețe (clasele 9-10) Compilator cpp-32 | 1,36 kb
Rundă lasm_20_01_2021_cl11 Status evaluat
Dată 20 ian. 2021 18:37:54 Scor 10
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>

typedef long long ll;

const ll mod=1e9+7;

const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};

#define rc(x)  return cout<<x<<"\n",0
#define sz(s)  (int) s.size()
#define pb push_back
#define mp make_pair
#define fr first
#define sc secondne all(x) x.begin(),x.end()
#define allr(x) x.rbegin(),x.rend()
#define PI 3.14159265358979
#define MAX 1600
 
using namespace std;

ll v[50009];
ll n,d,l,c;
ll val, final;

void primul(int x, int bit) {
    unsigned mask=~(1<<(x&31));
    v[x>>5]=(v[x>>5]&mask)^(bit<<(x&31));
}
void transfer(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 valoare(int x) {
    return (v[x>>5]>>(x&31))&1;
}
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	ifstream cin("beculete.in");
	ofstream cout("beculete.out");
    cin >> n >> d;
    primul(0,1);
    for(int i=1; i<n; i++) {
        final=valoare(i-1);
        transfer(i);
        primul(i,final);
        while(l<=i) {
            if(l==i)primul(c,val);
            if(d) {
                cin>>l>>c>>val;
                l--;
                c--;
                d--;
            }
            else l=n;
        }
    }
    for(int i=0; i<n; i++)cout << valoare(i) << " ";

}