답안 #238377

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
238377 2020-06-10T23:22:38 Z oscarsierra12 친구 (IOI14_friend) C++14
58 / 100
95 ms 12152 KB
#include "friend.h"
#include <bits/stdc++.h>

#define pb    push_back

using namespace std ;

// Find out best sample

const int N = 100010 ;

int confi[N] ;
int dp [N][2];
vector <int> G[N][3] ;

int go ( int u, int flag ) {
    auto &rf = dp[u][flag];
    if ( rf!=-1 ) return rf ;
    if ( flag ) {
        ///take
        int x = confi[u] ;
        for ( auto v:G[u][0] ) x += go( v, 0 ) ;
        for ( auto v:G[u][2] ) x += go( v, 0 ) ;
        for ( auto v:G[u][1] ) x += go( v, 1 ) ;
        rf = x ;
        ///dont take
        x = 0 ;
        int it1 = 0, it2 = 0, it3 = 0, rep3 = 0, ini= 0, rep = 0, repp = 0,rep2 =0 ;
        for ( auto v:G[u][0] ) rep += go(v, 1), repp += go(v,0) ;
        for ( auto v:G[u][1] ) rep2 += go(v, 0) ;
        for ( auto v:G[u][2] ) ini += go(v,0);
        for ( auto v:G[u][2] ) x = max ( x, ini - go(v,0) + go(v,1) + repp+ rep2 ) ;
        while ( it1 < G[u][0].size() ) {
            while ( it2 < G[u][1].size() && G[u][1][it2] < G[u][0][it1] ) {
                rep2 -= go(G[u][1][it2], 0) ;
                rep2 += go(G[u][1][it2], 1) ;
                it2++ ;
            }
            while ( it3 < G[u][2].size() && G[u][2][it3] < G[u][0][it1] ) {
               rep3 = max ( rep3, ini - go(G[u][2][it3],0) + go(G[u][2][it3],1) ) ;
               it3++ ;
            }
            x = max ( x, max(rep2, rep3)+rep ) ;
            rep -= go(G[u][0][it1],1) ;
            rep += go(G[u][0][it1],0) ;
            it1++ ;
        }
        rf = max ( rf, x ) ;

    }
    else {
        int x = 0 ;
        for ( auto v:G[u][1] ) x += go ( v, 0 ) ;
        for ( auto v:G[u][2] ) x += go(v,0) ;
        for ( auto v:G[u][0] ) x += go ( v, 1 ) ;
        rf = x ;
    }
    return rf ;
}

int findSample(int n,int confidence[],int host[],int protocol[]){
    for ( int i = 0 ; i < n ; ++i ) confi[i] = confidence[i] ;
    for ( int i = 1 ; i < n ; ++i ) G[host[i]][protocol[i]].push_back ( i ) ;
    memset ( dp,-1,sizeof dp ) ;
    return go(0,1) ;
}

Compilation message

friend.cpp: In function 'int go(int, int)':
friend.cpp:33:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while ( it1 < G[u][0].size() ) {
                 ~~~~^~~~~~~~~~~~~~~~
friend.cpp:34:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             while ( it2 < G[u][1].size() && G[u][1][it2] < G[u][0][it1] ) {
                     ~~~~^~~~~~~~~~~~~~~~
friend.cpp:39:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             while ( it3 < G[u][2].size() && G[u][2][it3] < G[u][0][it1] ) {
                     ~~~~^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 8192 KB Output is correct
2 Correct 9 ms 8192 KB Output is correct
3 Correct 10 ms 8192 KB Output is correct
4 Correct 9 ms 8192 KB Output is correct
5 Correct 10 ms 8192 KB Output is correct
6 Correct 9 ms 8192 KB Output is correct
7 Correct 9 ms 8168 KB Output is correct
8 Correct 9 ms 8192 KB Output is correct
9 Correct 9 ms 8192 KB Output is correct
10 Correct 9 ms 8192 KB Output is correct
11 Correct 9 ms 8192 KB Output is correct
12 Correct 11 ms 8192 KB Output is correct
13 Correct 9 ms 8192 KB Output is correct
14 Correct 9 ms 8192 KB Output is correct
15 Correct 10 ms 8192 KB Output is correct
16 Correct 9 ms 8192 KB Output is correct
17 Incorrect 9 ms 8192 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 8192 KB Output is correct
2 Correct 9 ms 8192 KB Output is correct
3 Correct 9 ms 8192 KB Output is correct
4 Correct 9 ms 8192 KB Output is correct
5 Correct 11 ms 8320 KB Output is correct
6 Correct 9 ms 8192 KB Output is correct
7 Correct 9 ms 8192 KB Output is correct
8 Correct 9 ms 8192 KB Output is correct
9 Correct 10 ms 8192 KB Output is correct
10 Correct 10 ms 8320 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 8192 KB Output is correct
2 Correct 9 ms 8192 KB Output is correct
3 Correct 9 ms 8192 KB Output is correct
4 Correct 11 ms 8192 KB Output is correct
5 Correct 9 ms 8192 KB Output is correct
6 Correct 10 ms 8192 KB Output is correct
7 Correct 10 ms 8192 KB Output is correct
8 Correct 9 ms 8192 KB Output is correct
9 Correct 9 ms 8192 KB Output is correct
10 Correct 10 ms 8192 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 10 ms 8192 KB Output is correct
2 Correct 9 ms 8192 KB Output is correct
3 Correct 9 ms 8192 KB Output is correct
4 Correct 9 ms 8192 KB Output is correct
5 Correct 10 ms 8320 KB Output is correct
6 Correct 10 ms 8192 KB Output is correct
7 Correct 9 ms 8192 KB Output is correct
8 Correct 9 ms 8192 KB Output is correct
9 Correct 10 ms 8192 KB Output is correct
10 Correct 9 ms 8192 KB Output is correct
11 Correct 9 ms 8192 KB Output is correct
12 Correct 10 ms 8192 KB Output is correct
13 Correct 10 ms 8192 KB Output is correct
14 Correct 9 ms 8192 KB Output is correct
15 Correct 9 ms 8192 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 8192 KB Output is correct
2 Correct 9 ms 8192 KB Output is correct
3 Correct 9 ms 8192 KB Output is correct
4 Correct 9 ms 8192 KB Output is correct
5 Correct 9 ms 8192 KB Output is correct
6 Correct 9 ms 8192 KB Output is correct
7 Correct 9 ms 8192 KB Output is correct
8 Correct 10 ms 8192 KB Output is correct
9 Correct 10 ms 8320 KB Output is correct
10 Correct 9 ms 8320 KB Output is correct
11 Correct 9 ms 8192 KB Output is correct
12 Correct 9 ms 8192 KB Output is correct
13 Correct 9 ms 8192 KB Output is correct
14 Correct 9 ms 8192 KB Output is correct
15 Correct 9 ms 8192 KB Output is correct
16 Correct 9 ms 8192 KB Output is correct
17 Correct 9 ms 8192 KB Output is correct
18 Correct 9 ms 8192 KB Output is correct
19 Correct 9 ms 8192 KB Output is correct
20 Correct 9 ms 8192 KB Output is correct
21 Correct 10 ms 8192 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 8192 KB Output is correct
2 Correct 12 ms 8192 KB Output is correct
3 Correct 9 ms 8192 KB Output is correct
4 Correct 9 ms 8192 KB Output is correct
5 Correct 10 ms 8192 KB Output is correct
6 Correct 10 ms 8192 KB Output is correct
7 Correct 9 ms 8192 KB Output is correct
8 Correct 10 ms 8192 KB Output is correct
9 Correct 10 ms 8192 KB Output is correct
10 Correct 10 ms 8192 KB Output is correct
11 Correct 9 ms 8192 KB Output is correct
12 Incorrect 95 ms 12152 KB Output isn't correct
13 Halted 0 ms 0 KB -