Submission #899885

#TimeUsernameProblemLanguageResultExecution timeMemory
899885nightfalWiring (IOI17_wiring)C++14
Compilation error
0 ms0 KiB
#include <cassert> #include <cstdio> #include <vector> #include <climits> #include <stdlib.h> #include <algorithm> long long min_total_length(std::vector<int> r, std::vector<int> b) { int n = r.size(), m = b.size(); std::vector<pair<int,int>> a(n+m); for(int i=0, j=0; i<n || j<m;) i==n? a[i+j++]=make_pair(j,1): j==m? a[j+i++]=make_pair(i,0): r[i]<b[j]? a[j+i++]=make_pair(i,0): a[i+j++]=make_pair(j,1); std::vector<long long> dp(n+m,LLONG_MAX); long long sumL=0, cntL=0, sumR=0, cntR=0, gap=0; int prev=-1, curr=0, optIdx=0; for(int i=1; i<n+m; i++) { if (a[i].second != a[i-1].second) { prev=curr; curr=i; sumR=cntR=0; sumL=0; optIdx=curr-1; gap= a[prev].second==0? b[a[curr].first]-r[a[curr-1].first]: r[a[curr].first]-b[a[curr-1].first]; } if (prev==-1) continue; sumR += a[curr].second==0? r[a[i].first]-r[a[curr].first]:b[a[i].first]-b[a[curr].first]; cntR++; for(int j=optIdx; j>=prev; j--) { cntL=curr-j; sumL += a[prev].second==0? r[a[curr-1].first]-r[a[j].first]:b[a[curr-1].first]-b[a[j].first]; long long temp = sumL + sumR + max(cntL,cntR)*gap; if (j==0) {dp[i] = min(dp[i],temp); optIdx = 0;} else { long long minDP = min(dp[j-1],dp[j]); if (minDP == LLONG_MAX) continue; else temp += minDP; if (dp[i]>temp) {dp[i]=temp;optIdx=j;} else break; } } for(int k=max(optIdx-1,prev); k<=optIdx; k++) sumL -= a[prev].second==0? r[a[curr-1].first]-r[a[k].first]:b[a[curr-1].first]-b[a[k].first]; } return dp[n+m-1]; }

Compilation message (stderr)

wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:10:17: error: 'pair' was not declared in this scope; did you mean 'std::pair'?
   10 |     std::vector<pair<int,int>> a(n+m);
      |                 ^~~~
      |                 std::pair
In file included from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/vector:60,
                 from wiring.cpp:3:
/usr/include/c++/10/bits/stl_pair.h:211:12: note: 'std::pair' declared here
  211 |     struct pair
      |            ^~~~
wiring.cpp:10:29: error: template argument 1 is invalid
   10 |     std::vector<pair<int,int>> a(n+m);
      |                             ^~
wiring.cpp:10:29: error: template argument 2 is invalid
wiring.cpp:13:16: error: invalid types 'int[int]' for array subscript
   13 |         i==n? a[i+j++]=make_pair(j,1): j==m? a[j+i++]=make_pair(i,0): r[i]<b[j]? a[j+i++]=make_pair(i,0): a[i+j++]=make_pair(j,1);
      |                ^
wiring.cpp:13:24: error: 'make_pair' was not declared in this scope; did you mean 'std::make_pair'?
   13 |         i==n? a[i+j++]=make_pair(j,1): j==m? a[j+i++]=make_pair(i,0): r[i]<b[j]? a[j+i++]=make_pair(i,0): a[i+j++]=make_pair(j,1);
      |                        ^~~~~~~~~
      |                        std::make_pair
In file included from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/vector:60,
                 from wiring.cpp:3:
/usr/include/c++/10/bits/stl_pair.h:567:5: note: 'std::make_pair' declared here
  567 |     make_pair(_T1&& __x, _T2&& __y)
      |     ^~~~~~~~~
wiring.cpp:13:47: error: invalid types 'int[int]' for array subscript
   13 |         i==n? a[i+j++]=make_pair(j,1): j==m? a[j+i++]=make_pair(i,0): r[i]<b[j]? a[j+i++]=make_pair(i,0): a[i+j++]=make_pair(j,1);
      |                                               ^
wiring.cpp:13:83: error: invalid types 'int[int]' for array subscript
   13 |         i==n? a[i+j++]=make_pair(j,1): j==m? a[j+i++]=make_pair(i,0): r[i]<b[j]? a[j+i++]=make_pair(i,0): a[i+j++]=make_pair(j,1);
      |                                                                                   ^
wiring.cpp:13:108: error: invalid types 'int[int]' for array subscript
   13 |         i==n? a[i+j++]=make_pair(j,1): j==m? a[j+i++]=make_pair(i,0): r[i]<b[j]? a[j+i++]=make_pair(i,0): a[i+j++]=make_pair(j,1);
      |                                                                                                            ^
wiring.cpp:21:14: error: invalid types 'int[int]' for array subscript
   21 |         if (a[i].second != a[i-1].second) {
      |              ^
wiring.cpp:21:29: error: invalid types 'int[int]' for array subscript
   21 |         if (a[i].second != a[i-1].second) {
      |                             ^
wiring.cpp:23:19: error: invalid types 'int[int]' for array subscript
   23 |             gap= a[prev].second==0? b[a[curr].first]-r[a[curr-1].first]: r[a[curr].first]-b[a[curr-1].first];
      |                   ^
wiring.cpp:23:40: error: invalid types 'int[int]' for array subscript
   23 |             gap= a[prev].second==0? b[a[curr].first]-r[a[curr-1].first]: r[a[curr].first]-b[a[curr-1].first];
      |                                        ^
wiring.cpp:23:57: error: invalid types 'int[int]' for array subscript
   23 |             gap= a[prev].second==0? b[a[curr].first]-r[a[curr-1].first]: r[a[curr].first]-b[a[curr-1].first];
      |                                                         ^
wiring.cpp:23:77: error: invalid types 'int[int]' for array subscript
   23 |             gap= a[prev].second==0? b[a[curr].first]-r[a[curr-1].first]: r[a[curr].first]-b[a[curr-1].first];
      |                                                                             ^
wiring.cpp:23:94: error: invalid types 'int[int]' for array subscript
   23 |             gap= a[prev].second==0? b[a[curr].first]-r[a[curr-1].first]: r[a[curr].first]-b[a[curr-1].first];
      |                                                                                              ^
wiring.cpp:28:18: error: invalid types 'int[int]' for array subscript
   28 |         sumR += a[curr].second==0? r[a[i].first]-r[a[curr].first]:b[a[i].first]-b[a[curr].first];
      |                  ^
wiring.cpp:28:39: error: invalid types 'int[int]' for array subscript
   28 |         sumR += a[curr].second==0? r[a[i].first]-r[a[curr].first]:b[a[i].first]-b[a[curr].first];
      |                                       ^
wiring.cpp:28:53: error: invalid types 'int[int]' for array subscript
   28 |         sumR += a[curr].second==0? r[a[i].first]-r[a[curr].first]:b[a[i].first]-b[a[curr].first];
      |                                                     ^
wiring.cpp:28:70: error: invalid types 'int[int]' for array subscript
   28 |         sumR += a[curr].second==0? r[a[i].first]-r[a[curr].first]:b[a[i].first]-b[a[curr].first];
      |                                                                      ^
wiring.cpp:28:84: error: invalid types 'int[int]' for array subscript
   28 |         sumR += a[curr].second==0? r[a[i].first]-r[a[curr].first]:b[a[i].first]-b[a[curr].first];
      |                                                                                    ^
wiring.cpp:33:22: error: invalid types 'int[int]' for array subscript
   33 |             sumL += a[prev].second==0? r[a[curr-1].first]-r[a[j].first]:b[a[curr-1].first]-b[a[j].first];
      |                      ^
wiring.cpp:33:43: error: invalid types 'int[int]' for array subscript
   33 |             sumL += a[prev].second==0? r[a[curr-1].first]-r[a[j].first]:b[a[curr-1].first]-b[a[j].first];
      |                                           ^
wiring.cpp:33:62: error: invalid types 'int[int]' for array subscript
   33 |             sumL += a[prev].second==0? r[a[curr-1].first]-r[a[j].first]:b[a[curr-1].first]-b[a[j].first];
      |                                                              ^
wiring.cpp:33:76: error: invalid types 'int[int]' for array subscript
   33 |             sumL += a[prev].second==0? r[a[curr-1].first]-r[a[j].first]:b[a[curr-1].first]-b[a[j].first];
      |                                                                            ^
wiring.cpp:33:95: error: invalid types 'int[int]' for array subscript
   33 |             sumL += a[prev].second==0? r[a[curr-1].first]-r[a[j].first]:b[a[curr-1].first]-b[a[j].first];
      |                                                                                               ^
wiring.cpp:34:44: error: 'max' was not declared in this scope; did you mean 'std::max'?
   34 |             long long temp = sumL + sumR + max(cntL,cntR)*gap;
      |                                            ^~~
      |                                            std::max
In file included from /usr/include/c++/10/algorithm:62,
                 from wiring.cpp:6:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: 'std::max' declared here
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
wiring.cpp:35:32: error: 'min' was not declared in this scope; did you mean 'std::min'?
   35 |             if (j==0) {dp[i] = min(dp[i],temp); optIdx = 0;}
      |                                ^~~
      |                                std::min
In file included from /usr/include/c++/10/algorithm:62,
                 from wiring.cpp:6:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: 'std::min' declared here
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
wiring.cpp:37:35: error: 'min' was not declared in this scope; did you mean 'std::min'?
   37 |                 long long minDP = min(dp[j-1],dp[j]);
      |                                   ^~~
      |                                   std::min
In file included from /usr/include/c++/10/algorithm:62,
                 from wiring.cpp:6:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: 'std::min' declared here
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
wiring.cpp:44:19: error: 'max' was not declared in this scope; did you mean 'std::max'?
   44 |         for(int k=max(optIdx-1,prev); k<=optIdx; k++)
      |                   ^~~
      |                   std::max
In file included from /usr/include/c++/10/algorithm:62,
                 from wiring.cpp:6:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: 'std::max' declared here
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
wiring.cpp:45:22: error: invalid types 'int[int]' for array subscript
   45 |             sumL -= a[prev].second==0? r[a[curr-1].first]-r[a[k].first]:b[a[curr-1].first]-b[a[k].first];
      |                      ^
wiring.cpp:45:43: error: invalid types 'int[int]' for array subscript
   45 |             sumL -= a[prev].second==0? r[a[curr-1].first]-r[a[k].first]:b[a[curr-1].first]-b[a[k].first];
      |                                           ^
wiring.cpp:45:62: error: invalid types 'int[int]' for array subscript
   45 |             sumL -= a[prev].second==0? r[a[curr-1].first]-r[a[k].first]:b[a[curr-1].first]-b[a[k].first];
      |                                                              ^
wiring.cpp:45:76: error: invalid types 'int[int]' for array subscript
   45 |             sumL -= a[prev].second==0? r[a[curr-1].first]-r[a[k].first]:b[a[curr-1].first]-b[a[k].first];
      |                                                                            ^
wiring.cpp:45:95: error: invalid types 'int[int]' for array subscript
   45 |             sumL -= a[prev].second==0? r[a[curr-1].first]-r[a[k].first]:b[a[curr-1].first]-b[a[k].first];
      |                                                                                               ^