(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #746093

#TimeUsernameProblemLanguageResultExecution timeMemory
746093almothana05Meetings (IOI18_meetings)C++14
Compilation error
0 ms0 KiB
#include "highway.h" #include <bits/stdc++.h> using namespace std; vector<pair<int , int> >kinder[300000] , ka; vector<int>cent , ed; int sub[300000], vis[300000]; long long a , b , menge , cmp , comp ,numm , nummer , kind , vase; int st , en , mid , mit; int centroid(int x , int f , int n){ for(int i = 0 ; i < kinder[x].size() ; i++){ kind = kinder[x][i].first; if(vis[kind] != 2 &&kind != f && sub[kind] * 2 > n){ return centroid(kind , x , n); } } for(int i = 0 ; i < kinder[x].size() ; i++){ ed[kinder[x][i].second] = 1; } vis[x] = 2; return x; } int dfs(int x){ vis[x] = 1; sub[x] = 1; for(int i = 0 ; i < kinder[x].size() ; i++){ kind = kinder[x][i].first; if(vis[kind] == 0){ sub[x] += dfs(kind); } } return sub[x]; } int bis(int x , int y , long long z ,int f , int root){ for(int i = 0 ; i <= y ; i++){ ed[kinder[root][i].second] = 1; } st = x ; en = y; mid = y; while(st <= en){ mit = (st + en)/2; while(mid > mit){ if(kinder[root][mid].first == f){ mid--; continue; } ed[kinder[root][mid].second] = 0; mid--; } while(mid <= mit){ if(kinder[root][mid].first == f){ mid++; continue; } ed[kinder[root][mid].second] = 1; mid++; } if(mid > mit){ mid--; } numm = ask(ed); if(numm >= z){ en = mit - 1; } else{ st = mit + 1; } } return st; } int suche(int x){ // cout << x << "\n"; dfs(x); nummer = centroid(x ,x , sub[x]); // cout << nummer << ' ' << x << "\n"; // cout << kinder[nummer].size() << "\n"; int fater,pl; for(int i = 0 ; i < kinder[nummer].size() ; i++ ){ if(sub[kinder[nummer][i].first] > sub[nummer]){ fater = kinder[nummer][i].first; break; } } // cout << fater << "\n"; cmp = ask(ed); // cout << cmp - comp << "\n"; if(nummer == x){ if(cmp == comp){ return nummer; } else{ comp = cmp; pl = bis(0 , kinder[nummer].size() - 1 , cmp , fater , nummer ); } } else{ if(cmp == comp){ return suche(x); } else if(cmp == comp + b - a){ return nummer; } else{ comp = cmp; pl = bis(0 , kinder[nummer].size() - 1 , cmp , fater , nummer ); // cout << kinder[nummer].size() << "\n"; } } return suche(kinder[nummer][pl].first); } void finde(){ for(int i = 0 ; i < menge ; i++){ if(vis[i] == 0){ ka.push_back({i , dfs(i)}); } } for(int i = 0 ; i < ka.size() ; i++){ cent.push_back(centroid(ka[i].first , ka[i].first , ka[i].second)); // cout << cent[i] << ' '; } // cout << "\n"; for(int i = 0 ; i < menge ; i++){ if(vis[i] == 1){ vis[i] = 0; } } ka.clear(); comp = ask(ed); vase = comp; if(comp > cmp){ st = 0 ; en = cent.size() - 2; mid = cent.size() - 1; while(st <= en){ mit = (st + en)/2; while(mid > mit){ for(int i = 0 ; i < kinder[cent[mid]].size() ; i++){ ed[kinder[cent[mid]][i].second] = 0; } mid--; } while(mid <= mit){ for(int i = 0 ; i < kinder[cent[mid]].size() ; i++){ ed[kinder[cent[mid]][i].second] = 1; } mid++; } if(mid > mit){ mid--; } numm = ask(ed); if(numm == comp){ en = mit - 1; } else{ st = mit + 1; } } int root , er ,zw; root = cent[st]; // cout << root << "\n"; cent.clear(); er = bis(0 , kinder[root].size() - 1 , cmp +b -a , -1 , root); // cout << er << "\n"; if(comp == cmp + b - a){ zw = root; for(int i = 0 ; i < kinder[root].size() ; i++){ ed[kinder[root][i].second] = 1; } } else{ zw = bis(er , kinder[root].size() - 1 , comp , -1 , root); // cout << zw << "\n"; // cout << zw << ' ' << kinder[root][zw].first << "\n"; for(int i = 0 ; i < kinder[root].size() ; i++){ ed[kinder[root][i].second] = 1; } // cout << kinder[root][er].first << "\n"; zw = suche(kinder[root][zw].first); // cout << zw << "\n"; } comp = ask(ed); er = suche(kinder[root][er].first); // cout << er << "\n"; answer(er , zw); return; } cent.clear(); finde(); } void find_pair(int N, vector<int> u, vector<int> v, int A, int B) { a = A; b = B; menge = N; for(int i = 0 ; i < u.size() ; i++){ kinder[u[i]].push_back({v[i] , i}); kinder[v[i]].push_back({u[i] , i}); ed.push_back(0); } cmp = ask(ed); finde(); }

Compilation message (stderr)

meetings.cpp:3:10: fatal error: highway.h: No such file or directory
    3 | #include "highway.h"
      |          ^~~~~~~~~~~
compilation terminated.