Submission #32226

#TimeUsernameProblemLanguageResultExecution timeMemory
32226dqhungdlFireworks (APIO16_fireworks)C++14
26 / 100
59 ms9660 KiB
#include <bits/stdc++.h>
using namespace std;

typedef pair<int,int> ii;
int n,m,F[305][305];
bool Free[305][305];
vector<ii> g[300005];

bool cmp(ii x1,ii x2)
{
    return x1.second<x2.second;
}

void Sub1()
{
    sort(g[1].begin(),g[1].end(),cmp);
    int tmp=g[1][int(g[1].size())/2].second;
    int64_t res=0;
    for(int i=0;i<g[1].size();i++)
        res+=abs(g[1][i].second-tmp);
    cout<<res;
}

int DFS(int u,int len)
{
    if(u==3&&len==1)
        int h=0;
    if(Free[u][len]==true)
        return F[u][len];
    Free[u][len]=true;
    if(g[u].size()==0)
    {
        if(len==0)
            return F[u][len]=0;
        return F[u][len]=1e9;
    }
    F[u][len]=0;
    for(int i=0;i<g[u].size();i++)
    {
        int v=g[u][i].first;
        int w=g[u][i].second;
        int sum=1e9;
        for(int len1=0;len1<=len;len1++)
            sum=min(sum,DFS(v,len-len1)+abs(w-len1));
        F[u][len]=min(F[u][len]+sum,int(1e9));
    }
    return F[u][len];
}

void Sub2()
{
    int res=1e9;
    for(int i=0;i<=300;i++)
        res=min(res,DFS(1,i));
    cout<<res;
}

int main()
{
    ios_base::sync_with_stdio(false);
    //freopen("FIREWORKS.INP","r",stdin);
    cin>>n>>m;
    int u,w;
    for(int i=2;i<=n+m;i++)
    {
        cin>>u>>w;
        g[u].push_back(ii(i,w));
    }
    if(n==1)
        Sub1();
    else
        Sub2();
}

Compilation message (stderr)

fireworks.cpp: In function 'void Sub1()':
fireworks.cpp:19:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<g[1].size();i++)
                  ^
fireworks.cpp: In function 'int DFS(int, int)':
fireworks.cpp:27:13: warning: unused variable 'h' [-Wunused-variable]
         int h=0;
             ^
fireworks.cpp:38:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<g[u].size();i++)
                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...