Submission #763594

#TimeUsernameProblemLanguageResultExecution timeMemory
763594OrazBCatfish Farm (IOI22_fish)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <functional> using namespace __gnu_pbds; using namespace std; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; //Dijkstra->set //set.find_by_order(x) x-position value //set.order_of_key(x) number of strictly less elements don't need *set.?? #define N 100005 #define wr cout << "Continue debugging\n"; #define all(x) (x).begin(), (x).end() #define ll long long int #define pii pair <ll, int> #define pb push_back #define ff first #define ss second ll max_weights(int n, int m, vector<int> x, vector<int> y, vector<int> w){ int nn = *max_element(all(y))+1; vector<vector<ll>> a(n, vector<ll> (nn+1, 0)); for (int i = 0; i < m; i++){ a[x[i]][y[i]] = w[i]; } for (int i = 0; i < n; i++){ for (int j = 1; j < nn; j++){ a[i][j] += a[i][j-1]; } } vector<vector<pii>> dp(n, vector<pii>(nn+1, {0, -1})); // vector<vector<vector<ll>>> dp(n, vector<vector<ll>>(nn+1, vector<ll>(2, 0))); vector<ll> cur(n, 0); for (int i = 0; i < nn; i++){ if (a[0][i] < a[1][nn-1]){ dp[1][i] = {a[1][nn-1], nn-1}; }else{ dp[1][i].ff = a[0][i]; } } cur[1] = a[1][nn-1]; for (int i = 2; i < n; i++){ for (int j = 0; j < nn; j++){ for (int k = 0; k <= j; k++){ ll x = dp[i-1][k].ff+(j > dp[i-1][k].ss ? a[i-1][j]-a[i-1][max(k,dp[i-1][k].ss)] : 0); if (x > dp[i][j].ff) dp[i][j] = {x, k}; } for (int k = j+1; k < nn; k++){ ll x = dp[i-1][k].ff+a[i][k]-a[i][j]; if (x > dp[i][j].ff) dp[i][j] = {x, k}; } // if (i == 1 and j == 0) cout << dp[i][j].ff << '\n'; for (int k = 0; k < nn; k++){ ll x = a[i-1][max(j,k)]+dp[i-2][k].ff; if (x > dp[i][j].ff) dp[i][j] = {x, -1}; } ll x = cur[i-2]+a[i-1][j]; if (x > dp[i][j].ff) dp[i][j] = {x, -1}; } cur[i] = max(cur[i], cur[i-1]); for (int k = 0; k < nn; k++){ cur[i] = max(cur[i], dp[i-1][k].ff+a[i][k]); } } // cout << cur[n-1] << '\n'; return max(cur[n-1], (*max_element(all(dp[n-1]))).ff); } int main () { int n, m; cin >> n >> m; vector<int> x(m), y(m), w(m); for (int i = 0; i < m; i++) cin >> x[i] >> y[i] >> w[i]; cout << max_weights(n,m,x,y,w); }

Compilation message (stderr)

/usr/bin/ld: /tmp/cceuCJij.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccHfGf5j.o:fish.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status