Submission #137312

#TimeUsernameProblemLanguageResultExecution timeMemory
137312cfalasShortcut (IOI16_shortcut)C++14
0 / 100
2 ms376 KiB
#include "shortcut.h" #include<bits/stdc++.h> #define INF 1000000 #define F first #define S second using namespace std; typedef pair<int, int> ii; typedef vector<ii> vii; vector<vector<ii> > adj; int ext[1000], len[1000]; vector<bool> vis; int furth; int dist; int diamet; long long distdfs(int s, int t){ vis[s] = true; if(s==t) return dist; for(int i=0;i<adj[s].size();i++){ if(!vis[adj[s][i].F]){ dist+=adj[s][i].S; if(distdfs(adj[s][i].F, t)) return dist; dist-=adj[s][i].S; } } return 0; } int m; long long find_diameter(){ int maxdiam = 0; int prsum[m]; prsum[0] = len[0]; for(int i=1;i<m;i++) prsum[i] = prsum[i-1] + len[i]; for(int i=0;i<m;i++){ for(int j=0;j<m;j++){ maxdiam = max(maxdiam, ext[i] + prsum[j] - prsum[i-1] + ext[j]); } } return maxdiam; } long long find_shortcut(int n, vector<int> l, vector<int> d, int c){ m = n; for(int i=0;i<n;i++) ext[i] = d[i], len[i]=l[i]; adj.assign(n, vii()); for(int i=0;i<n-1;i++){ adj[i].push_back(ii(i+1, l[i])); adj[i+1].push_back(ii(i, l[i])); } long long diameter = find_diameter(); for(int i=0;i<n;i++){ for(int j=0;j<i;j++){ //cout<<i<<" "<<j<<endl; dist = 0; vis.assign(n, false); distdfs(i, j); dist+=ext[i] + ext[j]; long long cc = c + ext[i] + ext[j]; //cout<<dist<<" "<<cc<<endl; if(dist==diameter){ //cout<<"try\n"; //diameter = min(diameter, diameterleft(i) + c + diameterright(j)); diameter = cc; return diameter; } } } return diameter; }

Compilation message (stderr)

shortcut.cpp: In function 'long long int distdfs(int, int)':
shortcut.cpp:19:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<adj[s].size();i++){
              ~^~~~~~~~~~~~~~
#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...