답안 #626344

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
626344 2022-08-11T11:55:03 Z boris_mihov 메기 농장 (IOI22_fish) C++17
3 / 100
107 ms 10856 KB
#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; 
    }

    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();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 25 ms 3048 KB Output is correct
2 Correct 32 ms 3784 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 99 ms 10744 KB Output is correct
6 Correct 107 ms 10856 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 252 KB Output is correct
2 Correct 84 ms 6020 KB Output is correct
3 Correct 91 ms 7264 KB Output is correct
4 Correct 32 ms 3056 KB Output is correct
5 Correct 39 ms 3784 KB Output is correct
6 Incorrect 0 ms 212 KB 1st lines differ - on the 1st token, expected: '4044', found: '6066'
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Incorrect 0 ms 212 KB 1st lines differ - on the 1st token, expected: '882019', found: '0'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB 1st lines differ - on the 1st token, expected: '3', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB 1st lines differ - on the 1st token, expected: '3', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB 1st lines differ - on the 1st token, expected: '3', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Incorrect 0 ms 212 KB 1st lines differ - on the 1st token, expected: '882019', found: '0'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 25 ms 3048 KB Output is correct
2 Correct 32 ms 3784 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 99 ms 10744 KB Output is correct
6 Correct 107 ms 10856 KB Output is correct
7 Correct 1 ms 252 KB Output is correct
8 Correct 84 ms 6020 KB Output is correct
9 Correct 91 ms 7264 KB Output is correct
10 Correct 32 ms 3056 KB Output is correct
11 Correct 39 ms 3784 KB Output is correct
12 Incorrect 0 ms 212 KB 1st lines differ - on the 1st token, expected: '4044', found: '6066'
13 Halted 0 ms 0 KB -