Submission #1032233

#TimeUsernameProblemLanguageResultExecution timeMemory
1032233tolbiFriend (IOI14_friend)C++17
Compilation error
0 ms0 KiB
#define tol(bi) (1LL<<((int)(bi))) #include "friend.h" #include <bits/stdc++.h> using namespace std; // Find out best sample int findSample(int n,int confidence[],int host[],int protocol[]){ if (n<=1000){ bool prot0=false; bool prot1=false; bool prot2=false; for (int i = 1; i < n; ++i) { if (protocol[i]==0) prot0=true; if (protocol[i]==1) prot1=true; if (protocol[i]==2) prot2=true; } vector<vector<int>> arr(n); for (int i = 1; i < n; i++){ if (protocol[i]==0){ arr[host[i]].push_back(i); arr[i].push_back(host[i]); } else if (protocol[i]==1){ for (auto &fr : arr[host[i]]){ arr[fr].push_back(i); arr[i].push_back(fr); } } else { for (auto &fr : arr[host[i]]){ arr[fr].push_back(i); arr[i].push_back(fr); } arr[host[i]].push_back(i); arr[i].push_back(host[i]); } } if (n<=10){ //subtask1 int ret = 0; for (int i = 0; i < tol(n); i++){ int cur = 0; for (int j = 0; j < n; j++){ if (tol(j)&i){ cur+=confidence[j]; for (auto &nex : arr[j]){ if (tol(nex)&i){ cur=0; break; } } if (cur==0) break; } } ret=max(ret,cur); } return ret; } if (prot1 && !prot0 && !prot2){ //subtask2 int ret = 0; for (int i = 0; i < n; ++i) { ret+=confidence[i]; } return ret; } if (prot2 && !prot0 && !prot1){ //subtask3 int ret = 0; for (int i = 0; i < n; ++i){ ret=max(ret,confidence[i]); } return ret; } if (prot0 && !prot1 && !prot2){ //subtask4 vector<array<int,2>> dp(n,{-1,-1}); function<int(int,int,int)> f = [&](int node, int lnode, int flag)->int{ if (dp[node][flag]!=-1) return dp[node][flag]; dp[node][flag]=0; for (auto &nex : arr[node]){ if (nex==lnode) continue; dp[node][flag]+=f(nex,node,0); } if (flag==1){ return dp[node][flag]; } int nn = confidence[node]; for (auto &nex : arr[node]){ if (nex==lnode) continue; nn+=f(nex,node,1); } return dp[node][flag]=max(dp[node][flag],nn); }; return f(0,-1,0); } if (prot0 && prot1 && !prot2){ //subtask5 vector<array<int,2>> dp(n,{0,0}); dp[0][1]=confidence[0]; for (int i = 1; i < n; i++){ if (protocol[i]==0){ dp[i][1]=dp[host[i][0]]+confidence[i]; dp[i][0]=max(dp[host[i][0]],dp[host[i][1]]); } else { dp[i][1]=dp[host[i][1]]+confidence[i]; dp[i][0]=max(dp[host[i][0]],dp[host[i][0]]); } } } return max(dp[n-1][0],dp[n-1][1]); } return 23; }

Compilation message (stderr)

friend.cpp: In function 'int findSample(int, int*, int*, int*)':
friend.cpp:104:25: error: invalid types 'int[int]' for array subscript
  104 |      dp[i][1]=dp[host[i][0]]+confidence[i];
      |                         ^
friend.cpp:105:29: error: invalid types 'int[int]' for array subscript
  105 |      dp[i][0]=max(dp[host[i][0]],dp[host[i][1]]);
      |                             ^
friend.cpp:105:44: error: invalid types 'int[int]' for array subscript
  105 |      dp[i][0]=max(dp[host[i][0]],dp[host[i][1]]);
      |                                            ^
friend.cpp:108:25: error: invalid types 'int[int]' for array subscript
  108 |      dp[i][1]=dp[host[i][1]]+confidence[i];
      |                         ^
friend.cpp:109:29: error: invalid types 'int[int]' for array subscript
  109 |      dp[i][0]=max(dp[host[i][0]],dp[host[i][0]]);
      |                             ^
friend.cpp:109:44: error: invalid types 'int[int]' for array subscript
  109 |      dp[i][0]=max(dp[host[i][0]],dp[host[i][0]]);
      |                                            ^
friend.cpp:113:14: error: 'dp' was not declared in this scope
  113 |   return max(dp[n-1][0],dp[n-1][1]);
      |              ^~