제출 #792070

#제출 시각아이디문제언어결과실행 시간메모리
792070caganyanmaz친구 (IOI14_friend)C++17
46 / 100
28 ms1640 KiB
#include <bits/stdc++.h> #define pb push_back #include "friend.h" using namespace std; int n; int *conf; int *h; int *p; constexpr static int IAM = 0; constexpr static int MYF = 1; constexpr static int WER = 2; constexpr static int MX1 = 10; int c[MX1][MX1]; int subtask1() { for (int i = 1; i < n; i++) { if (p[i] == IAM || p[i] == WER) c[h[i]][i] = c[i][h[i]] = 1; if (p[i] == MYF || p[i] == WER) for (int j = 0; j < i; j++) if (c[j][h[i]]) c[j][i] = c[i][j] = 1; } int res = 0; for (int i = 0; i < (1<<n); i++) { vector<int> v; for (int j = 0; j < n; j++) if (i & (1<<j)) v.pb(j); bool found = false; for (int j = 0; j < v.size(); j++) for (int k = j+1; k < v.size(); k++) if (c[v[j]][v[k]]) found = true; if (found) continue; int sum = 0; for (int i : v) sum += conf[i]; res = max(res, sum); } return res; } int subtask2() { int sum = 0; for (int i = 0; i < n; i++) sum += conf[i]; return sum; } int subtask3() { int best = 0; for (int i = 0; i < n; i++) best = max(best, conf[i]); return best; } constexpr static int MXSIZE = 1000; int dp[MXSIZE][2]; vector<int> g[MXSIZE]; void dfs4(int node) { dp[node][1] = conf[node]; for (int c : g[node]) { dfs4(c); dp[node][1] += dp[c][0]; dp[node][0] += max(dp[c][0], dp[c][1]); } } int subtask4() { for (int i = 1; i < n; i++) g[h[i]].pb(i); dfs4(0); return max(dp[0][0], dp[0][1]); } // Find out best sample int findSample(int _n,int _conf[],int _h[],int _p[]) { n = _n; conf = _conf; h = _h; p = _p; if (n <= 10) return subtask1(); bool seen_wer = p[1] == WER; int current = p[1]; for (int i = 2; i < n; i++) { if (p[i] != current) current = -1; if (p[i] == WER) seen_wer = true; } if (current == MYF) return subtask2(); if (current == WER) return subtask3(); if (current == IAM) return subtask4(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

friend.cpp: In function 'int subtask1()':
friend.cpp:37:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |                 for (int j = 0; j < v.size(); j++)
      |                                 ~~^~~~~~~~~~
friend.cpp:38:45: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |                         for (int k = j+1; k < v.size(); k++)
      |                                           ~~^~~~~~~~~~
friend.cpp: In function 'int findSample(int, int*, int*, int*)':
friend.cpp:99:14: warning: variable 'seen_wer' set but not used [-Wunused-but-set-variable]
   99 |         bool seen_wer = p[1] == WER;
      |              ^~~~~~~~
#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...