답안 #473847

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
473847 2021-09-16T10:31:08 Z HossamHero7 Odašiljači (COCI20_odasiljaci) C++14
0 / 70
1000 ms 71236 KB
#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;
typedef long long ll;
typedef vector <ll> row;
typedef vector <row> matrix;
#define endl '\n'
#define fast ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0);
#define all(v) ((v).begin()), ((v).end())
#define allR(v) ((v).rbegin()), ((v).rend())
#define For(i,n) for(int i=0;i<(int)(n);i++)
#define sz(v) v.size()
#define swapS(a,b) if(a>b) swap(a,b)
const ll mod = 1e9+7;
const ll OO = 1e18;
const ll invalid = -1e18;
int dx[] = {0,0,-1,1,1,1,-1,-1};
int dy[] = {1,-1,0,0,1,-1,-1,1};
ll fixMod(ll x){
    return ((x%mod) + mod) % mod;
}
ll lcm(ll a,ll b){
    return max(a,b)/__gcd(a,b)*min(a,b);
}
ll power(ll a,ll b){
    if(b==0) return 1;
    if(b==1) return a;
    if(b&1){
        ll y=power(a,b/2);
        return (y*y*a);
    }
    else {
        ll y=power(a,b/2);
        return (y*y);
    }
}
ll inv(ll n){
    return power(n,(mod-2));
}
matrix zero(int n,int m){
    return matrix(n,row(m,0));
}
matrix identity(int n){
    matrix ret = zero(n,n);
    for(int i=0;i<n;i++){
        ret[i][i] = 1;
    }
    return ret;
}
matrix multiply(const matrix &a, const matrix &b){
    matrix ret = zero(a.size(),b[0].size());
    for(int i=0;i<a.size();i++){
        for(int k=0;k<a[0].size();k++){
            for(int j=0;j<b[0].size();j++){
                ret[i][j] += a[i][k] * b[k][j];
                ret[i][j] = ret[i][j];
            }
        }
    }
    return ret;
}
matrix matrixPower(matrix &a,ll b){
    if(b == 0) return identity(a.size());
    if(b == 1) return a;
    matrix r = matrixPower(a,b/2);
    if(b&1) return multiply(multiply(r,r),a);
    return multiply(r,r);
}
double calcDis(double x1,double y1,double x2,double y2){
    return sqrt(abs(x1-x2)*abs(x1-x2)+abs(y1-y2)*abs(y1-y2));
}
vector <vector<ll>> adj;
map <pair<double,double>,double> cost;
ll x;
double vis[1005];
double mnToX(int node){
    if(node == x) return 0;
    vis[node] = 1e9;
    for(auto ch : adj[node]){
        if(vis[ch] == -1){
            vis[node] = min(vis[node],max(cost[{node,ch}],mnToX(ch)));
        }
    }
    return vis[node];
}
void solve(){
    ll n;
    cin>>n;
    adj.resize(n+1);
    vector <pair<double,double>> v(n);
    for(auto &i:v){
        cin>>i.first>>i.second;
    }
    vector <double> dis;
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            double m = (calcDis(v[i].first,v[i].second,v[j].first,v[j].second)/2.0);
            adj[i+1].push_back(j+1);
            adj[j+1].push_back(i+1);
            cost[{i+1,j+1}] = m;
            cost[{j+1,i+1}] = m;
        }
    }
    double ans=0;
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            x = j;
            for(int i=1;i<=1005;i++){
        vis[i] = -1;
    }

            ans = max(ans,mnToX(i));
        }
    }
    cout<<fixed<<setprecision(7)<<ans<<endl;
}
int main()
{
    fast
    ll t=1;
    //cin>>t;
    while(t--){
        //Some important Notes:
        //  1- Any minus with mod fixed mod
        //  2- Any divide with mod inverse
        //  3- Any mod problem make mod in every where
        //  4- Any dp problem don't forget to return the saved value :)
        solve();
    }
    return 0;
}

Compilation message

odasiljaci.cpp: In function 'matrix multiply(const matrix&, const matrix&)':
odasiljaci.cpp:52:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |     for(int i=0;i<a.size();i++){
      |                 ~^~~~~~~~~
odasiljaci.cpp:53:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         for(int k=0;k<a[0].size();k++){
      |                     ~^~~~~~~~~~~~
odasiljaci.cpp:54:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |             for(int j=0;j<b[0].size();j++){
      |                         ~^~~~~~~~~~~~
odasiljaci.cpp: In function 'void solve()':
odasiljaci.cpp:109:16: warning: iteration 1004 invokes undefined behavior [-Waggressive-loop-optimizations]
  109 |         vis[i] = -1;
      |         ~~~~~~~^~~~
odasiljaci.cpp:108:26: note: within this loop
  108 |             for(int i=1;i<=1005;i++){
      |                         ~^~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
2 Incorrect 0 ms 204 KB Output isn't correct
3 Incorrect 14 ms 508 KB Output isn't correct
4 Incorrect 61 ms 716 KB Output isn't correct
5 Incorrect 166 ms 1052 KB Output isn't correct
6 Execution timed out 1082 ms 17992 KB Time limit exceeded
7 Execution timed out 1075 ms 17988 KB Time limit exceeded
8 Execution timed out 1088 ms 41704 KB Time limit exceeded
9 Execution timed out 1099 ms 70980 KB Time limit exceeded
10 Execution timed out 1033 ms 71236 KB Time limit exceeded