1896D - Ones and Twos - CodeForces Solution


data structures math two pointers

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
#define FOR(i,s,e) for (int i=(s); i<(e); i++)
#define FOE(i,s,e) for (int i=(s); i<=(e); i++)
#define FOD(i,s,e) for (int i=(s)-1; i>=(e); i--)
#define CLR(a,x) memset(a, x, sizeof(a))
#define EXP(i,l) for (int i=(l); i; i=qn[i])
#define LLD long long
#define RI(x) scanf("%d", &x)
#define RL(x) scanf("%lld", &x)
#define PB push_back
using namespace std;

#define MUL_CASE 1

const int N = 100005;
int a[N];

void solve(){
	int n, m;
	RI(n), RI(m);
	
	FOE(i,1,n) RI(a[i]);
	
	int sum = 0;
	set<int> S;
	FOE(i,1,n){
		if (a[i] == 1) S.insert(i);
		sum += a[i];
	}
	
	while (m--){
		int op, target, x, v;
		RI(op);
		if (op == 1){
			RI(target);
			
			
			int ok = 0;
			if (target > sum) ;
			else if (S.size() == 0){
				if ((sum - target) % 2 == 0) ok = 1;
			}
			else{
				int t = min(*S.begin() - 1, n - *S.rbegin());
				int x = sum - 2*t;
				if (target <= x || (sum - target) % 2 == 0) ok = 1;
			}
			
			puts(ok ? "YES" : "NO");
		}
		if (op == 2){
			RI(x), RI(v);
			if (a[x] == 1) S.erase(x);
			sum -= a[x];
			a[x] = v;
			sum += a[x];
			if (a[x] == 1) S.insert(x);
		}
	}
	
}

int main(){
	int TC = 1;
	if (MUL_CASE) RI(TC);
	while (TC--) solve();
	return 0;
}


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST