제출 #1062925

#제출 시각아이디문제언어결과실행 시간메모리
1062925jamjanekCarnival Tickets (IOI20_tickets)C++14
컴파일 에러
0 ms0 KiB
#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;

void usun(vector<int>&ile, set<pair<int, int>>&ilejedynek, int x){
	pair<int,int> it = {ile[x], x};
	ilejedynek.erase(it);
	ile[it.second]--;
	ilejedynek.insert({it.first-1, it.second});
	
}

long long find_maximum(int k, std::vector<std::vector<int>> x) {
	int n = x.size();
	int m = x[0].size();
	int i, j;

	vector<vector<int>>answer = x;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			answer[i][j] = -1;
	long long wynik = 0;
	for(int war=0;war<k;war++){
		vector<pair<long long, int>>srednie;
		vector<int>pozmini(n), pozmaxi(n);
		for(i=0;i<n;i++){
			int mini = 1000000010, maxi = -1000000010;
			for(j=0;j<m;j++)
				if(x[i][j]!=-1)
					mini = min(mini, x[i][j]), maxi = max(maxi, x[i][j]);
			srednie.push_back({0, i});
			for(j=0;j<m;j++){
				if(mini==x[i][j])
					pozmini[i] = j;
				if(maxi==x[i][j])
					pozmaxi[i] = j;
				if(x[i][j]!=-1)
					srednie.back().first+=x[i];
			}
		}
		sort(srednie.begin(), srednie.end());
		for(i=0;i<n;i++){
			int j = srednie[i].second;
			if(i<n/2){
				answer[j][pozmini[j]] = war; 
				wynik-=x[j][pozmini[j]];
				x[j][pozmini[j]] = -1;
			}
			else{
				answer[j][pozmaxi[j]] = war; 
				wynik+=x[j][pozmaxi[j]];
				x[j][pozmaxi[j]] = -1;
			}
		}
	}
	allocate_tickets(answer);
	return wynik;
	
}

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

tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:38:26: error: no match for 'operator+=' (operand types are 'long long int' and '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'})
   38 |      srednie.back().first+=x[i];