Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include <iomanip>
- #include <vector>
- #include <map>
- #include <algorithm>
- #include <string>
- #include <cmath>
- #include <set>
- #include <unordered_set>
- #include <stack>
- #include <cassert>
- #include <queue>
- #include <deque>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- //#define int long long
- const int inf=1e9+1329;
- const int len=300;
- int n;
- vector<pair<int, bool>> blocks; //bool-есть ли хотя бы одна группа в блоке
- vector<int> a;
- void precalc(){
- while (n%len!=0) {
- n++;
- a.push_back(-1);
- }
- blocks.assign(n/len, {-1,0});
- }
- int ind=1;
- void change(int l,int r){
- bool fl=1;
- set<int> seen;
- for(int i=l;i<r;){
- if(i%len==0 && i+len<r){
- int cur=i/len;
- if(blocks[cur].second==1){
- fl=0;
- }
- seen.insert(blocks[cur].first);
- i+=len;
- }
- else{
- seen.insert(a[i]);
- i++;
- }
- }
- if(!fl || seen.size()>1){
- cout << 0 << "\n";
- return;
- }
- else{
- cout << 1 << "\n";
- }
- for(int i=l;i<r;){
- if(i%len==0 && i+len<r){
- int cur=i/len;
- //в блоке
- blocks[cur].first=ind;
- blocks[cur].second=0;//с блоком все ок
- i += len;
- }
- else{
- //вне блока
- int cur=i/len;
- blocks[cur].second = 1;//блок сломали
- a[i]=ind;
- i++;
- }
- }
- ind++;
- }
- void clear(int l,int r){
- for(int i=l;i<r;){
- if(i%len==0 && i+len<r){
- int cur=i/len;
- blocks[cur].first = -1;
- blocks[cur].second = 0;
- i+=len;
- }
- else{
- a[i]=-1;
- i++;
- }
- }
- if(l%len!=0){
- //был заскок слева
- int cur=l/len;
- set<int> seen;
- for(int i=cur*len;i<cur*len+len;i++){
- seen.insert(a[i]);
- }
- if(seen.size()==1){
- blocks[cur].second = 0;
- blocks[cur].first = a[l];
- }
- }
- if((r-1)%len!=0){
- int cur=r/len;
- set<int> seen;
- for(int i=cur*len;i<cur*len+len;i++){
- seen.insert(a[i]);
- }
- if(seen.size()==1){
- blocks[cur].second = 0;
- blocks[cur].first = a[l];
- }
- }
- }
- signed main() {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- cin >> n;
- a.resize(n);
- for(auto &t:a){
- t=-1;
- }
- int q;
- cin >> q;
- while (q--) {
- <#statements#>
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement