제출 #1071849

#제출 시각아이디문제언어결과실행 시간메모리
1071849edogawa_somethingTricks of the Trade (CEOI23_trade)C++17
10 / 100
513 ms760 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vii;
typedef pair<ll,ll> pii;
#define F first
#define S second
#define all(v) v.begin(),v.end()
#define pb push_back
const ll M=6e3+10;
const ll inf=2e18;
ll n,k,a[M],b[M],c[M];
int main() {
    ios_base::sync_with_stdio(0),cin.tie(0);
    cin>>n>>k;
    for(int i=0;i<n;i++)
        cin>>a[i];
    for(int i=0;i<n;i++)
        cin>>b[i];
    ll ans=-inf;
    ll l,r;
    for(int i=0;i<n;i++) {
        ll nsum=0,psum=0;
        priority_queue<ll,vii,greater<ll>>q;
        for(int j=i;j<n;j++) {
            nsum+=a[j];
            if(q.size()<k)
                q.push(b[j]),psum+=b[j];
            else {
                if(b[j]<q.top())
                    continue;
                else
                    psum-=q.top(),q.pop(),q.push(b[j]),psum+=b[j];
            }
            if(q.size()==k) {
                if(ans<psum-nsum) {
                    ans=max(ans,psum-nsum);
                    l=i,r=j;
                }
            }
        }
    }
    ll cur=0;
    ans=0;
    for(int i=l;i<=r;i++)
        ans-=a[i];
    for(int j=0;j<k;j++) {
        cur=0;
        ll ind=0;
        for(int i=l;i<=r;i++) {
            if(b[i]>=cur)
            cur=b[i],ind=i;
        }
        ans+=b[ind],b[ind]=-1;
    }
    cout<<ans<<'\n';
    for(int i=0;i<n;i++) {
        if(b[i]==-1)
            cout<<1;
        else
            cout<<0;
    }
    return 0;
}

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

trade.cpp: In function 'int main()':
trade.cpp:27:24: warning: comparison of integer expressions of different signedness: 'std::priority_queue<long long int, std::vector<long long int>, std::greater<long long int> >::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   27 |             if(q.size()<k)
      |                ~~~~~~~~^~
trade.cpp:35:24: warning: comparison of integer expressions of different signedness: 'std::priority_queue<long long int, std::vector<long long int>, std::greater<long long int> >::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   35 |             if(q.size()==k) {
      |                ~~~~~~~~^~~
trade.cpp:21:10: warning: 'r' may be used uninitialized in this function [-Wmaybe-uninitialized]
   21 |     ll l,r;
      |          ^
trade.cpp:45:13: warning: 'l' may be used uninitialized in this function [-Wmaybe-uninitialized]
   45 |     for(int i=l;i<=r;i++)
      |             ^
#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...