제출 #1046395

#제출 시각아이디문제언어결과실행 시간메모리
1046395n1kCarnival Tickets (IOI20_tickets)C++17
11 / 100
1 ms1116 KiB
#include "tickets.h" #include <vector> #include <bits/stdc++.h> using namespace std; using ll = long long; void __print(int x) {cerr << x;} void __print(long x) {cerr << x;} void __print(long long x) {cerr << x;} void __print(unsigned x) {cerr << x;} void __print(unsigned long x) {cerr << x;} void __print(unsigned long long x) {cerr << x;} void __print(float x) {cerr << x;} void __print(double x) {cerr << x;} void __print(long double x) {cerr << x;} void __print(char x) {cerr << '\'' << x << '\'';} void __print(const char *x) {cerr << '\"' << x << '\"';} void __print(const string &x) {cerr << '\"' << x << '\"';} void __print(bool x) {cerr << (x ? "true" : "false");} template<typename T, typename V> void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';} template<typename T> void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";} void _print() {cerr << "]\n";} template <typename T, typename... V> void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);} //#define debug(x...) cerr << "[" << #x << "] = ["; _print(x) #define debug(...) 0 int n, m; ll get(vector<int> v){ sort(v.begin(), v.end()); ll t = 0; for(int i=0; i<v.size(); i++) t += abs(v[i] - v[v.size()/2]); return t; } tuple<ll, vector<vector<int>>> calc(vector<array<ll, 3>> v){ vector<std::vector<int>> ans(n, vector<int>(m, -1)); ll t = 0; set<int> s; for(int i=0; i<v.size(); i++){ auto [x, ii, jj] = v[i]; if(not s.count(ii)){ t -= x; ans[ii][jj] = 0; } s.insert(ii); if(s.size()==n/2){ ll add = 0; for(int j=v.size()-1; j>i; j--){ auto [xx, iii, jjj] = v[j]; if(s.count(iii)){ continue; } s.insert(iii); add += xx; ans[iii][jjj] = 0; } return make_tuple(t + add, ans); } } } long long find_maximum(int k, std::vector<std::vector<int>> x) { n = x.size(); m = x[0].size(); std::vector<std::vector<int>> answer(n, vector<int>(m)); vector<array<ll, 3>> v; for(int i=0; i<n; i++){ v.push_back({x[i].front(), i, 0}); v.push_back({x[i].back(), i, m-1}); } sort(v.begin(), v.end()); debug(v); auto [cost1, ans1] = calc(v); reverse(v.begin(), v.end()); auto [cost2, ans2] = calc(v); cost2 = abs(cost2); if(cost1<cost2){ swap(cost1, cost2); swap(ans1, ans2); } allocate_tickets(ans1); return cost1; }

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

tickets.cpp: In function 'll get(std::vector<int>)':
tickets.cpp:40:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |  for(int i=0; i<v.size(); i++) t += abs(v[i] - v[v.size()/2]);
      |               ~^~~~~~~~~
tickets.cpp: In function 'std::tuple<long long int, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > > calc(std::vector<std::array<long long int, 3> >)':
tickets.cpp:48:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<long long int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |  for(int i=0; i<v.size(); i++){
      |               ~^~~~~~~~~
tickets.cpp:56:14: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   56 |   if(s.size()==n/2){
      |      ~~~~~~~~^~~~~
tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:33:20: warning: statement has no effect [-Wunused-value]
   33 | #define debug(...) 0
      |                    ^
tickets.cpp:85:2: note: in expansion of macro 'debug'
   85 |  debug(v);
      |  ^~~~~
tickets.cpp: In function 'std::tuple<long long int, std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > > > calc(std::vector<std::array<long long int, 3> >)':
tickets.cpp:45:52: warning: control reaches end of non-void function [-Wreturn-type]
   45 |  vector<std::vector<int>> ans(n, vector<int>(m, -1));
      |                                                    ^
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...