Submission #785529

#TimeUsernameProblemLanguageResultExecution timeMemory
785529fatemetmhrTowns (IOI15_towns)C++17
35 / 100
13 ms356 KiB
// ~ Be Name Khoda ~ // #include "towns.h" #include <bits/stdc++.h> //#pragma GCC optimize ("O3") //#pragma GCC target("avx2") //#pragma GCC optimize("unroll-loops,Ofast") using namespace std; typedef long long ll; #define pb push_back #define mp make_pair #define all(x) x.begin(), x.end() #define fi first #define se second const int maxn = 1e6 + 10; const int maxn5 = 300; const int maxnt = 1.2e6 + 10; const int maxn3 = 1e3 + 10; const int mod = 1e9 + 7; const ll inf = 1e18; ll dis1[maxn5], dis2[maxn5], val[maxn5]; vector <pair<int, int>> av; int hubDistance(int n, int sub){ int v = 0; dis1[0] = 0; for(int i = 1; i < n; i++){ dis1[i] = getDistance(0, i); if(dis1[i] >= dis1[v]) v = i; } dis2[v] = 0; int u = v; for(int i = 0; i < n; i++){ dis2[i] = getDistance(v, i); if(dis2[i] >= dis2[u]) u = i; } for(int i = 0; i < n; i++){ dis1[i] = getDistance(u, i); } int mnid = 0; for(int i = 0; i < n; i++){ val[i] = abs(dis1[i] - dis2[i]); if(val[i] <= val[mnid]) mnid = i; } ll len = (dis1[mnid] + dis2[mnid] - dis1[v]) / 2; ll R = max(dis1[mnid], dis2[mnid]) - len; ll x = R; int c = dis1[mnid] > dis2[mnid] ? u : v; if(c == v){ for(int i = 0; i < n; i++) swap(dis1[i], dis2[i]); swap(u, v); } int num[3] = {0, 0, 0}; for(int i = 0; i < n; i++){ ll len = (dis1[i] + dis2[i] - dis1[v]) / 2; if(dis1[i] - len == x) num[0]++; else if(dis1[i] - len > x) num[1]++; else if(dis1[i] - len < x) num[2]++; } if(max({num[0], num[1], num[2]}) <= n / 2) return R; bool re = false; for(int i = 0; i < n; i++){ ll len = (dis1[i] + dis2[i] - dis1[v]) / 2; if(dis2[i] - len == x && dis1[i] - len > x) re = true; } if(re){ int num[3] = {0, 0, 0}; for(int i = 0; i < n; i++){ ll len = (dis1[i] + dis2[i] - dis1[v]) / 2; if(dis2[i] - len == x) num[0]++; else if(dis2[i] - len > x) num[1]++; else if(dis2[i] - len < x) num[2]++; } if(max({num[0], num[1], num[2]}) <= n / 2) return R; } return -R; }

Compilation message (stderr)

towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:65:6: warning: declaration of 'len' shadows a previous local [-Wshadow]
   65 |   ll len = (dis1[i] + dis2[i] - dis1[v]) / 2;
      |      ^~~
towns.cpp:54:5: note: shadowed declaration is here
   54 |  ll len = (dis1[mnid] + dis2[mnid] - dis1[v]) / 2;
      |     ^~~
towns.cpp:74:10: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   74 |   return R;
      |          ^
towns.cpp:77:6: warning: declaration of 'len' shadows a previous local [-Wshadow]
   77 |   ll len = (dis1[i] + dis2[i] - dis1[v]) / 2;
      |      ^~~
towns.cpp:54:5: note: shadowed declaration is here
   54 |  ll len = (dis1[mnid] + dis2[mnid] - dis1[v]) / 2;
      |     ^~~
towns.cpp:82:7: warning: declaration of 'num' shadows a previous local [-Wshadow]
   82 |   int num[3] = {0, 0, 0};
      |       ^~~
towns.cpp:63:6: note: shadowed declaration is here
   63 |  int num[3] = {0, 0, 0};
      |      ^~~
towns.cpp:84:7: warning: declaration of 'len' shadows a previous local [-Wshadow]
   84 |    ll len = (dis1[i] + dis2[i] - dis1[v]) / 2;
      |       ^~~
towns.cpp:54:5: note: shadowed declaration is here
   54 |  ll len = (dis1[mnid] + dis2[mnid] - dis1[v]) / 2;
      |     ^~~
towns.cpp:93:11: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   93 |    return R;
      |           ^
towns.cpp:95:9: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   95 |  return -R;
      |         ^~
towns.cpp:30:28: warning: unused parameter 'sub' [-Wunused-parameter]
   30 | int hubDistance(int n, int sub){
      |                        ~~~~^~~
#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...