Submission #639793

#TimeUsernameProblemLanguageResultExecution timeMemory
639793a_aguiloGlobal Warming (CEOI18_glo)C++14
0 / 100
88 ms1840 KiB
#include<bits/stdc++.h>

using namespace std;

int n, x, HI;

void print(int v[]){
    for(int i = 0; i < n; ++i) cout << " " << v[i];
    cout << endl;
}

int binarySearch(int x, int arr[]){
    int lo = 0, hi = HI;
    int ans = 0;
    while(hi >= lo){
        int mid = lo + (hi-lo)/2;
        if(arr[mid] <= x) {
            lo = mid+1;
            ans = mid;
        }
        else{
            hi = mid-1;
        }
    }
    return lo;
}

int main(){
    cin >> n >> x;
    int V[n];
    int endWithLength[n];
    for(int i = 0; i < n; ++i) cin >> V[i];
    HI = 0;
    memset(endWithLength, 0, sizeof(endWithLength));
    endWithLength[0] = V[0];
    for(int i = 1; i < n; ++i){
        int pos = binarySearch((long long)V[i], endWithLength);
        if(pos == HI){
            if(V[i] >= endWithLength[pos]) pos++;
        }
        HI = max(HI, pos);
        //cout << "i " << i << " || value " << V[i] << " || pos1 " << pos;
        endWithLength[pos] = V[i];
        //print(endWithLength);
    }
    cout << HI+1 << endl;
    return 0;
}

Compilation message (stderr)

glo.cpp: In function 'int binarySearch(int, int*)':
glo.cpp:14:9: warning: variable 'ans' set but not used [-Wunused-but-set-variable]
   14 |     int ans = 0;
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...