Submission #626353

#TimeUsernameProblemLanguageResultExecution timeMemory
626353boris_mihovCatfish Farm (IOI22_fish)C++17
9 / 100
90 ms10864 KiB
#include "fish.h" #include <algorithm> #include <iostream> #include <cassert> #include <numeric> #include <vector> typedef long long llong; const int MAXM = 300000 + 10; const int MAXN = 3000 + 10; const int INF = 1e9; int n, m; struct Fish { int x, y, w; inline friend bool operator < (const Fish &a, const Fish &b) { return a.x < b.x || (a.x == b.x && a.y < b.y); } } fish[MAXM]; llong solveOdd() { llong ans = 0; for (int i = 1 ; i <= m ; ++i) { ans += fish[i].w; } return ans; } llong solveX12() { llong sum[2]; sum[0] = sum[1] = 0; for (int i = 1 ; i <= m ; ++i) { --fish[i].x; sum[fish[i].x] += fish[i].w; } if (n == 2) { return std::max(sum[0], sum[1]); } std::sort(fish+1, fish+1+m); int ptr0 = 1; int ptr1 = 1; while (ptr1 <= m && fish[ptr1].x == 0) ptr1++; if (ptr1 == m+1) return sum[0]; sum[0] = 0; llong ans = sum[1]; while (ptr0 <= m && fish[ptr0].x == 0) { sum[0] += fish[ptr0].w; while (ptr1 <= m && fish[ptr1].y <= fish[ptr0].y) { sum[1] -= fish[ptr1].w; ++ptr1; } ans = std::max(ans, sum[0] + sum[1]); ptr0++; } return ans; } llong dp2[MAXM]; llong solveY1() { llong ans = 0; std::sort(fish+1, fish+1+m); fish[0].x = -1; for (int i = 1 ; i <= m ; ++i) { if (fish[i].x != fish[i-1].x + 1) dp2[i] = fish[i].w + dp2[i-1]; else dp2[i] = std::max(dp2[i-2] + fish[i].w, dp2[i-1]); } return dp2[m]; } llong solveNSmall() { llong ans = 0; return ans; } llong max_weights(int N, int M, std::vector <int> X, std::vector <int> Y, std::vector <int> W) { n = N; m = M; bool isOdd = true; bool isX01 = true; bool isY0 = true; for (int i = 1 ; i <= m ; ++i) { ++X[i-1]; ++Y[i-1]; fish[i].x = X[i-1]; fish[i].y = Y[i-1]; fish[i].w = W[i-1]; isOdd &= (fish[i].x &1); isX01 &= (fish[i].x <= 2); isY0 &= (fish[i].y == 1); } if (isOdd) return solveOdd(); if (isX01) return solveX12(); if (isY0) return solveY1(); return solveNSmall(); }

Compilation message (stderr)

fish.cpp: In function 'llong solveY1()':
fish.cpp:78:11: warning: unused variable 'ans' [-Wunused-variable]
   78 |     llong ans = 0;
      |           ^~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...