Submission #366438

#TimeUsernameProblemLanguageResultExecution timeMemory
366438alireza_kavianiTravelling Merchant (APIO17_merchant)C++11
100 / 100
110 ms4332 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef pair<int, int> pii; #define all(x) (x).begin(),(x).end() #define X first #define Y second #define sep ' ' #define endl '\n' #define SZ(x) ll(x.size()) const ll MAXN = 100 + 10; const ll MAXK = 1000 + 10; const ll LOG = 22; const ll INF = 2e18; const ll MOD = 1e9 + 7; //998244353; //1e9 + 9; ll n , m , k , adj[2][MAXN][MAXN] , cost[MAXN][MAXN] , sell[MAXN][MAXK] , buy[MAXN][MAXK]; void floyd(int ind){ for(int k = 0 ; k < n ; k++){ for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < n ; j++){ adj[ind][i][j] = min(adj[ind][i][j] , adj[ind][i][k] + adj[ind][k][j]); } } } } int main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin >> n >> m >> k; for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < k ; j++){ cin >> buy[i][j] >> sell[i][j]; } fill(adj[0][i] , adj[0][i] + MAXN , INF); //adj[0][i][i] = 0; } for(int i = 0 ; i < m ; i++){ int v , u , w; cin >> v >> u >> w; v--; u--; adj[0][v][u] = w; } for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < n ; j++){ cost[i][j] = 0; for(int l = 0 ; l < k ; l++){ if(buy[i][l] == -1 || sell[j][l] == -1) continue; cost[i][j] = min(cost[i][j] , buy[i][l] - sell[j][l]); } // cout << i << sep << j << sep << cost[i][j] << endl; } } floyd(0); ll l = 0 , r = 1e11 + 10; while(r - l > 1){ ll mid = l + r >> 1; // cout << mid << endl; for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < n ; j++){ if(adj[0][i][j] >= INF / mid){ adj[1][i][j] = INF; continue; } adj[1][i][j] = min(INF , adj[0][i][j] * mid + cost[i][j]); // cout << i << sep << j << sep << adj[0][i][j] << sep << adj[1][i][j] << endl; } } // cout << "==============" << endl; floyd(1); int flag = 0; for(int i = 0 ; i < n ; i++) if(adj[1][i][i] <= 0) flag = 1; if(flag) l = mid; else r = mid; } cout << l << endl; return 0; } /* */

Compilation message (stderr)

merchant.cpp: In function 'int main()':
merchant.cpp:62:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   62 |   ll mid = l + r >> 1;
      |            ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...