제출 #1292119

#제출 시각아이디문제언어결과실행 시간메모리
1292119lambd47카니발 티켓 (IOI20_tickets)C++20
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h>
#include "tickets.h"

using namespace std;
#define ll long long
#define L(i,j,k) for(int i=(j);i<=(k);i++)
#define R(i,j,k) for(int i=(j);i>=(k);i--)
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(),(v).end()

long long find_maximum(int k, std::vector<std::vector<int>> x) {
	int n = x.size();
	int m = x[0].size();
	vector<vector<int>> answer(n,vector<int>(m,-1));
    priority_queue<array<ll,2>> pos;//,vector<array<int,3>>,greater<array<int,3>>> pos;
    vector<int> cnt(n,0);
    L(i,0,n-1){
        if(i%2){
            L(j,0,k-1){
                cnt[i]++;
                neg.push({x[i][j]+x[i][j+m-1-k+1],i});
            }
        }
        else{
            R(j,m-1,m-1-k+1){
                pos.push({-x[i][j]-x[i][j-m+k],i});
            }
        }
    }

    while(sz(neg) && sz(pos) && (neg.top()[0]+pos.top()[0])>0){
       auto [v,i]=neg.top();
       auto [v2,i2]=pos.top();
       pos.pop();
       neg.pop();
       cnt[i]--;
       cnt[i2]++;
    }
    
    vector<int> l(n,0);
    vector<int> r(n,m-1);
    L(i,0,k-1){
        vector<int> ordat(n);iota(all(ordat),0);
        sort(all(ordat),[&](int a, int b){
                return cnt[a]>cnt[b];
        });

        L(j,0,n/2-1){
            cnt[ordat[j]]--;
            resp-=x[ordat[j]][l[ordat[j]]];
            answer[ordat[j]][l[ordat[j]]]=i;
            l[ordat[j]]++;
        }
        L(j,n/2,n-1){
            answer[ordat[j]][r[ordat[j]]]=i;
            resp+=x[ordat[j]][r[ordat[j]]];
            r[ordat[j]]--;
        }
    }

	allocate_tickets(answer);
	return resp;
}

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

tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:21:17: error: 'neg' was not declared in this scope
   21 |                 neg.push({x[i][j]+x[i][j+m-1-k+1],i});
      |                 ^~~
tickets.cpp:31:14: error: 'neg' was not declared in this scope
   31 |     while(sz(neg) && sz(pos) && (neg.top()[0]+pos.top()[0])>0){
      |              ^~~
tickets.cpp:8:22: note: in definition of macro 'sz'
    8 | #define sz(v) ((int)(v).size())
      |                      ^
tickets.cpp:50:13: error: 'resp' was not declared in this scope
   50 |             resp-=x[ordat[j]][l[ordat[j]]];
      |             ^~~~
tickets.cpp:56:13: error: 'resp' was not declared in this scope
   56 |             resp+=x[ordat[j]][r[ordat[j]]];
      |             ^~~~
tickets.cpp:62:16: error: 'resp' was not declared in this scope
   62 |         return resp;
      |                ^~~~