제출 #128787

#제출 시각아이디문제언어결과실행 시간메모리
128787win11905Cake 3 (JOI19_cake3)C++11
0 / 100
3 ms380 KiB
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define long long long
#define pii pair<int, int>
#define x first
#define y second
using namespace std;
 
const int N = 1e5+5;
 
int n, m;
map<int, vector<int> > Mp;
 
int main() {
    scanf("%d %d", &n, &m);
    for(int i = 1, v, c; i <= n; ++i) {
        scanf("%d %d", &v, &c);
        Mp[c].emplace_back(v);
    }
    vector<pair<int, vector<int> > > vec; 
    for(auto &x : Mp) {
        vec.emplace_back(x);
        sort(all(vec.back().y), greater<int>());
    }
    long ans = -1e18;
    for(int i = 0; i < vec.size(); ++i) {
        priority_queue<int, vector<int>, greater<int> > Q;
        long sum = 0;
        sum += vec[i].y[0];
        while(Q.size() > m-1) sum -= Q.top(), Q.pop();
        if(Q.size() == m-1) ans = max(ans, sum);
        for(int j = 1; j < vec[i].y.size(); ++j) sum += vec[i].y[j], Q.emplace(vec[i].y[j]);
        for(int j = i+1; j < vec.size(); ++j) {
            for(int k = vec[j].y.size()-1; k > 0; --k) sum += vec[j].y[k], Q.emplace(vec[j].y[k]);
            while(Q.size() > m-2) sum -= Q.top(), Q.pop();
            if(Q.size() == m-2) ans = max(ans, sum + vec[j].y[0] - 2ll * (vec[j].x - vec[i].x));
            sum += vec[j].y[0], Q.emplace(vec[j].y[0]);
        }
    }
    printf("%lld\n", ans);
}

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

cake3.cpp: In function 'int main()':
cake3.cpp:26:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < vec.size(); ++i) {
                    ~~^~~~~~~~~~~~
cake3.cpp:30:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while(Q.size() > m-1) sum -= Q.top(), Q.pop();
               ~~~~~~~~~^~~~~
cake3.cpp:31:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(Q.size() == m-1) ans = max(ans, sum);
            ~~~~~~~~~^~~~~~
cake3.cpp:32:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j = 1; j < vec[i].y.size(); ++j) sum += vec[i].y[j], Q.emplace(vec[i].y[j]);
                        ~~^~~~~~~~~~~~~~~~~
cake3.cpp:33:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j = i+1; j < vec.size(); ++j) {
                          ~~^~~~~~~~~~~~
cake3.cpp:35:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             while(Q.size() > m-2) sum -= Q.top(), Q.pop();
                   ~~~~~~~~~^~~~~
cake3.cpp:36:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(Q.size() == m-2) ans = max(ans, sum + vec[j].y[0] - 2ll * (vec[j].x - vec[i].x));
                ~~~~~~~~~^~~~~~
cake3.cpp:15:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~~
cake3.cpp:17:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &v, &c);
         ~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...