Submission #633522

#TimeUsernameProblemLanguageResultExecution timeMemory
633522Ahmed57Global Warming (NOI13_gw)C++14
19 / 40
1090 ms65536 KiB
#include <bits/stdc++.h>

using namespace std;
//BIT Fenwick tree
int n ;
int bit[6000001]={0};
void add(int e,int v){
    while(e<=n*4){
        bit[e]+=v;
        e+=e&-e;
    }
}
long long sum(int e){
    long long res = 0;
    while(e>=1){
        res+=bit[e];
        e -= e&-e;
    }
    return res;
}
int main(){
    cin>>n;
    vector<int> v,w,so;v.push_back(2);
    for(int i = 0;i<n;i++){
        int x;cin>>x;
        w.push_back(x);
        so.push_back(x);
    }
    sort(so.begin(),so.end());
    int z = 2;
    map<int,int>cmp;
    for(int i = 0;i<n;i++){
        cmp[so[i]] = z++;
        if(i&&so[i]==so[i-1])z--;
    }
    for(int i = 0;i<n;i++){
        v.push_back(cmp[w[i]]*2);
    }
    for(int i = 0;i<n;i++){
        if(v[i]<v[i+1]){
            add(v[i+1],-1);
            add(v[i],1);
        }
    }
    long long ma = 0;
    for(int i = 2;i<=cmp[so[n-1]]*2;i++){
        ma = max(ma,sum(i));
    }
    cout<<ma<<"\n";
}
#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...