Submission #989980

#TimeUsernameProblemLanguageResultExecution timeMemory
989980MihailoCyberland (APIO23_cyberland)C++17
5 / 100
3045 ms13156 KiB
#include "cyberland.h" #include <cassert> #include <cstdio> #include <bits/stdc++.h> #define pll pair<long long, long long> #define mp make_pair #define pb push_back #define xx first #define yy second using namespace std; typedef long long ll; vector<pair<__int128, __int128> > adj[100100], v; int a[100100], n, ks; __int128 dis[100100], rez; void dikstra() { priority_queue<pair<__int128, __int128> > q; pair<__int128, __int128> cur; for(int i=0; i<=n; i++) dis[i]=-1; // cout<<'\n'; for(int j=0; j<v.size(); j++) { for(int i=0; i<adj[v[j].xx].size(); i++) { if(dis[adj[v[j].xx][i].xx]==-1) q.push(mp(v[j].yy-adj[v[j].xx][i].yy, adj[v[j].xx][i].xx)); } } while(q.size()) { cur=q.top(); q.pop(); // cout<<cur.xx<<' '<<cur.yy<<'\n'; if(dis[cur.yy]!=-1) continue; dis[cur.yy]=-cur.xx; for(int i=0; i<adj[cur.yy].size(); i++) { if(dis[adj[cur.yy][i].xx]==-1) q.push(mp(cur.xx-adj[cur.yy][i].yy, adj[cur.yy][i].xx)); } } } double solve(int N, int M, int K, int H, std::vector<int> x, std::vector<int> y, std::vector<int> c, std::vector<int> arr) { for(int i=0; i<=N; i++) adj[i].clear(); for(int i=0; i<M; i++) { adj[x[i]+1].pb(mp(y[i]+1, c[i])); adj[y[i]+1].pb(mp(x[i]+1, c[i])); } adj[H+1].clear(); n=N; a[0]=1; a[1]=0; for(int i=1; i<arr.size(); i++) { a[i+1]=arr[i]; } ///////// adj[0].pb(mp(1, 0)); v.clear(); v.push_back(mp(0, 0)); dikstra(); if(dis[H+1]==-1) return -1; for(int i=1; i<=n; i++) { if(dis[i]==-1) a[i]=1; } adj[0].clear(); ///////// for(int i=1; i<=N; i++) { if(a[i]==0) adj[0].pb(mp(i, 0)); } rez=1e16; ks=K; K++; while(K--) { dikstra(); if(dis[H+1]>=0) rez=min(rez, dis[H+1]*(ll)pow(2, K)); v.clear(); for(int i=1; i<=N; i++) { if(a[i]==2) v.pb(mp(i, -dis[i])); } for(int i=0; i<=N; i++) { for(int j=0; j<adj[i].size(); j++) adj[i][j].yy*=2; } } return rez/((long double)pow(2, ks)); }

Compilation message (stderr)

cyberland.cpp: In function 'void dikstra()':
cyberland.cpp:22:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<__int128, __int128> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for(int j=0; j<v.size(); j++) {
      |                  ~^~~~~~~~~
cyberland.cpp:23:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<__int128, __int128> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |         for(int i=0; i<adj[v[j].xx].size(); i++) {
      |                      ~^~~~~~~~~~~~~~~~~~~~
cyberland.cpp:33:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<__int128, __int128> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |         for(int i=0; i<adj[cur.yy].size(); i++) {
      |                      ~^~~~~~~~~~~~~~~~~~~
cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:49:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     for(int i=1; i<arr.size(); i++) {
      |                  ~^~~~~~~~~~~
cyberland.cpp:77:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<__int128, __int128> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |             for(int j=0; j<adj[i].size(); j++) adj[i][j].yy*=2;
      |                          ~^~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...