Submission #1024977

#TimeUsernameProblemLanguageResultExecution timeMemory
1024977nvujicaFriend (IOI14_friend)C++14
8 / 100
18 ms5412 KiB
#include <bits/stdc++.h> #include "friend.h" #define ll long long #define fi first #define se second using namespace std; const int maxn = 1010; int sol[2]; int boja[maxn]; vector <int> v[maxn]; int con[maxn]; void dodaj(int a, int b){ v[a].push_back(b); v[b].push_back(a); } void rek(int x, int b){ boja[x] = b; sol[b] += con[x]; for(int i = 0; i < v[x].size(); i++){ int x2 = v[x][i]; if(boja[x2] == -1) rek(x2, !b); } } int findSample(int n,int confidence[],int host[],int protocol[]){ bool sve1 = 1, sve2 = 1; for(int i = 1; i < n; i++){ sve1 &= (protocol[i] == 1); sve2 &= (protocol[2] == 1); } if(sve1){ int sum = 0; for(int i = 0; i < n; i++){ sum += confidence[i]; } return sum; } if(sve2){ int naj = 0; for(int i = 0; i < n; i++){ naj = max(naj, confidence[i]); } return naj; } for(int i = 1; i < n; i++){ if(protocol[i]){ for(int j = 0; j < v[host[i]].size(); j++){ int x = v[host[i]][j]; dodaj(x, i); } } if(protocol[i] % 2 == 0) dodaj(host[i], i); } // cout << confidence[0] << ' ' << confidence[1] << endl; if(n <= 10){ int ans = 0; for(int mask = 0; mask < (1 << n); mask++){ int sum = 0; bool ok = 1; for(int i = 0; i < n; i++){ if(!(mask & (1 << i))) continue; sum += confidence[i]; for(int j = 0; j < v[i].size(); j++){ int x = v[i][j]; if(mask & (1 << x)){ // cout << "tu " << mask << ' ' << i << ' ' << x << endl; ok = 0; break; } } } // cout << mask << ' ' << ok << ' ' << sum << endl; if(ok) ans = max(ans, sum); } return ans; } for(int i = 0; i < n; i++){ con[i] = confidence[i]; } int ans = 0; memset(boja, -1, sizeof boja); for(int i = 0; i < n; i++){ if(boja[i] != -1) continue; rek(i, 0); ans += max(sol[0], sol[1]); sol[0] = 0; sol[1] = 0; } return ans; } //int main(){ // ios_base::sync_with_stdio(0); // cin.tie(0); // // int n; // cin >> n; // int confidence[n]; // int host[n]; // int protocol[n]; // // for(int i = 0; i < n; i++){ // cin >> confidence[i]; // } // // for(int i = 1; i < n; i++){ // cin >> host[i] >> protocol[i]; // } // // cout << findSample(n, confidence, host, protocol); // // return 0; //}

Compilation message (stderr)

friend.cpp: In function 'void rek(int, int)':
friend.cpp:26:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for(int i = 0; i < v[x].size(); i++){
      |                 ~~^~~~~~~~~~~~~
friend.cpp: In function 'int findSample(int, int*, int*, int*)':
friend.cpp:58:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |    for(int j = 0; j < v[host[i]].size(); j++){
      |                   ~~^~~~~~~~~~~~~~~~~~~
friend.cpp:80:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |     for(int j = 0; j < v[i].size(); j++){
      |                    ~~^~~~~~~~~~~~~
#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...