1853C - Ntarsis' Set - CodeForces Solution


binary search math

Please click on ads to support us..

Python Code:

t=int(input())
for _ in range(t):
    n,k=map(int,input().split())
    a=list(map(int,input().split()))
    if a[0]!=1 or k==0:
        print(1)
        continue
    
    c=1
    d=0
    jmp=0    while jmp!=k:
        for i in range(d,n+1):
            if a[i-1]<c+i:
                if i==n:
                    c+=i
                    d=i
                    jmp+=1
                    break
                elif c+i<a[i]:
                    c+=i
                    d=i
                    jmp+=1
                    break
    
    print(c)

C++ Code:

#include <bits/stdc++.h>
#ifndef ONLINE_JUDGE
#include "templates/temp.h"
#endif
using namespace std;
using ll=long long;

void solve(){
    int n,k;cin>>n>>k;
    vector<ll>a(n);
    for(auto &x:a){
        cin>>x;
    }
    ll ans=0,l=1,r=1e12;
    while(l<=r){
        ll mid=(l+r)>>1;
        ll cur=mid;
        for(int i=0;i<k;i++){
            cur-=upper_bound(begin(a),end(a),cur)-begin(a);
        }
        if(cur>0){
            ans=mid;
            r=mid-1;
        }
        else{
            l=mid+1;
        }
    }
    cout << ans << endl;
}
int32_t main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);
    int t=1;
    cin>>t;
    while(t-->0){
        solve();
    }
}


Comments

Submit
0 Comments
More Questions

1373D - Maximum Sum on Even Positions
1574C - Slay the Dragon
621A - Wet Shark and Odd and Even
1395A - Boboniu Likes to Color Balls
1637C - Andrew and Stones
1334B - Middle Class
260C - Balls and Boxes
1554A - Cherry
11B - Jumping Jack
716A - Crazy Computer
644A - Parliament of Berland
1657C - Bracket Sequence Deletion
1657B - XY Sequence
1009A - Game Shopping
1657A - Integer Moves
230B - T-primes
630A - Again Twenty Five
1234D - Distinct Characters Queries
1183A - Nearest Interesting Number
1009E - Intercity Travelling
1637B - MEX and Array
224A - Parallelepiped
964A - Splits
1615A - Closing The Gap
4C - Registration System
1321A - Contest for Robots
1451A - Subtract or Divide
1B - Spreadsheet
1177A - Digits Sequence (Easy Edition)
1579A - Casimir's String Solitaire