제출 #293732

#제출 시각아이디문제언어결과실행 시간메모리
293732wildturtleExercise Deadlines (CCO20_day1problem2)C++14
25 / 25
240 ms22776 KiB
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,i,e,f,g,n,m,k,l,ans,BITree[500005],A[500005];
vector <long long> v[500005];
priority_queue <long long> pq;
long long getSum(long long idx) {
    idx=idx+1;
    long long sum=0;
    while(idx>0) {
        sum+=BITree[idx];
        idx-=idx&(-idx);
    }
    return sum;
}
void updateBIT(long long idx,long long val) {
    idx=idx+1;
    while(idx<=200005) {
        BITree[idx]+=val;
        idx+=idx&(-idx);
    }
}
int main() {
    cin>>n;
    for(long long i=1;i<=n;i++) {
        cin>>A[i];
        v[A[i]].push_back(i);
    }
    sort(A+1,A+1+n);
    for(long long i=1;i<=n;i++) {
        if(A[i]<i) { cout<<-1; return 0; }
    }
    for(long long i=n;i>=1;i--) {
        for(long long j=0;j<v[i].size();j++)
        pq.push(v[i][j]);
        k=pq.top();
        //cout<<k<<" ";
        pq.pop();
        a=getSum(k-1);
        //cout<<a<<" ";
        ans+=i-(k-a);
        //cout<<ans<<endl;
        updateBIT(k,1);
    }
    cout<<ans;
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:33:28: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |         for(long long j=0;j<v[i].size();j++)
      |                           ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...