Recent News from Codeforces

  • Flamire commented:

    In problem H, was it known during testing that the most straightforward way of writing a brute force works? Just consider values from $$$1,2,\cdots,n$$$ in order, and decide whether to put each element on the left or right, write a dfs (with minimal pruning) and it passes.

    It occured to me after I had submitted that it works because of the intended construction, the first branch tried will be $$$1,?,?,\cdots,?$$$, and the next branch will be $$$2,3,4,?,?,\cdots,?,1$$$.

    I tried switching Left->Right to Right->Left and the code immediately gets TLE (xd), maybe it would be better to ask for anti-bitonic permutations after all?

    11/24/2025, 3:02:26 AM
  • sujalxpro commented:

    Why is splitting by dividing by 100 the best solution

    Like shouldn't dividing by 2 the best solution

    I thought about converting all number Divisible by 2 Than divisible by 4 And so on till 1024

    After that from lowest to biggest (1024,1024) , (2048. 1024), each will cost 1024 + 1000

    But was able to get a solution of 2e6 coins

    11/24/2025, 2:56:03 AM
  • catandcode commented:

    The statement of E is really terrible.

    11/24/2025, 2:20:28 AM
  • Leon28 commented:

    This will be one amazing contest

    11/24/2025, 2:19:39 AM
  • shiny_shine commented:

    Considering enumerating all the layers from the bottom to the top, you'll find that different columns merges in a decreasing order of height of the walls, and tiles disappears in an increasing order of height of the columns. In all connected components, all the existing tiles are aligned to the right.

    When at some column, a tile exists from the $$$i$$$-th second to the $$$j$$$-th second (inclusive), then if you only consider the total sum, it's equivalent to subtract $$$i$$$ and add $$$(j+1)$$$ at this column. Use prefix sum to optimize this procedure.

    11/24/2025, 2:08:20 AM
  • Heixow commented:

    a $$$O(n)$$$ solution for E

    void solve() {
    	int n, k; cin >> n >> k;
    	vector<int> a(n+1), b(n*2+10);
    	for(int i=1;i<=n;i++) cin >> a[i];
    	for(int i=1;i<=n;i++) b[a[i]] ++;
    	int r = 0, l = 0, ans = 0;
    	for(int i=1;i<=n*2;i++) {
    		if(i <= r) {
    			r += b[i];
    		} else if(b[i] > k) {
    			ans = max(ans, r-l);
    			r = i + (b[i]-k);
    			l = i;
    		}
    	}
    	ans = max(ans, r-l);
    	cout << ans << '\n';
    }
    
    11/24/2025, 1:07:04 AM
  • BLOBVISGOD commented:

    Don't cheat using GPT.

    Like, what is the point of you cheating?

    11/24/2025, 12:49:20 AM
  • ink65536 commented:

    Corner case :)

    11/24/2025, 12:47:21 AM
  • mxq commented:

    I thought I'd misunderstood the problem...In one operation multiple energy level can be adjusted,right?

    11/24/2025, 12:30:54 AM
  • mxq commented:

    why my solution got a WA? I think I share the same thinking with you. ~~~~~ from collections import defaultdict def sol(): n,k=map(int,input().split()) li=list(map(int,input().split())) di=defaultdict(int) for i in li: di[i]+=1 cou=0 for i in range(1,4*n+1): if di[i]>k: di[i+1]+=di[i]-1 cou+=1

    return cou

    for _ in range(int(input())): print(sol()) ~~~~~ [https://codeforces.com/contest/2157/submission/350321034]

    11/24/2025, 12:26:04 AM

Sign in

Don't have an account? Sign up