Submission #626347

#TimeUsernameProblemLanguageResultExecution timeMemory
626347boris_mihovCatfish Farm (IOI22_fish)C++17
9 / 100
91 ms10860 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 solveY1() { llong ans = 0; return ans; } 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(); }
#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...