답안 #987035

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
987035 2024-05-21T17:54:19 Z activedeltorre 봉쇄 시간 (IOI23_closing) C++17
8 / 100
157 ms 43448 KB
#include "closing.h"
#include <queue>
using namespace std;
#include <vector>
#include <iostream>
long long dist[200005][4];
vector<pair<long long,long long> >adj[200005];
void dfs(long long curr,long long par,long long tip)
{
    for(auto k:adj[curr])
    {
        if(k.first!=par)
        {
            dist[k.first][tip]=dist[curr][tip]+k.second;
            dfs(k.first,curr,tip);
        }
    }
}
priority_queue<long long>pq;
int max_score(int N, int X, int Y, long long K,std::vector<int> U, std::vector<int> V, std::vector<int> W)
{
    long long n=N,x,y,i,w;
    for(i=0; i<=n; i++)
    {
        adj[i].clear();
    }
    for(i=0; i<n-1; i++)
    {
        x=U[i];
        y=V[i];
        w=W[i];
        adj[x].push_back({y,w});
        adj[y].push_back({x,w});
    }
    if(X>Y)
    {
        swap(X,Y);
    }
    x=X;
    y=Y;
    dist[x][0]=0;
    dist[y][1]=0;
    dfs(x,0,0);
    dfs(y,0,1);
    if(dist[y][0]>2*K)
    {
        for(i=0; i<n; i++)
        {
            pq.push(-dist[i][0]);
            pq.push(-dist[i][1]);
        }
        long long cnt=0;
        while(pq.size())
        {
            if(K>-pq.top())
            {
                cnt++;
                K+=pq.top();
            }
            pq.pop();
        }
        return cnt;
    }
    else
    {
        long long st,dr;
        int sol=0;
        for(st=0; st<=y; st++)
        {
            for(dr=x; dr<n; dr++)
            {
                long long sum=0;
                int cnt=0;
                for(i=st; i<=dr; i++)
                {
                    sum-=min(dist[i][0],dist[i][1]);
                }
                for(i=x;i<=dr;i++)
                {
                    sum+=dist[i][0];
                    cnt++;
                }
                for(i=y;i>=st;i--)
                {
                    sum+=dist[i][1];
                    cnt++;
                }
                if(sum<=K)
                {
                    for(i=min(x-1,st-1); i>=0; i--)
                    {
                        pq.push(-dist[i][0]);
                    }
                    for(i=max(y+1,dr+1); i<n; i++)
                    {
                        pq.push(-dist[i][1]);
                    }
                    while(pq.size())
                    {
                        if(sum-pq.top()<=K)
                        {
                            sum-=pq.top();
                            cnt++;
                        }
                        pq.pop();
                    }
                    sol=max(sol,cnt);
                }
            }
        }
        return sol;
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 144 ms 37576 KB Output is correct
2 Correct 157 ms 43448 KB Output is correct
3 Correct 78 ms 9300 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 6748 KB Output is correct
2 Incorrect 1 ms 6744 KB 1st lines differ - on the 1st token, expected: '3', found: '4'
3 Halted 0 ms 0 KB -