제출 #484754

#제출 시각아이디문제언어결과실행 시간메모리
484754sam571128여행하는 상인 (APIO17_merchant)C++17
0 / 100
36 ms2212 KiB
#include <bits/stdc++.h> #define int long long #define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); using namespace std; const int N = 105; int dis[N][N], profit[N][N], b[N][N], s[N][N], dis2[N][N]; int n,m,k; bool check(int x){ for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ dis2[i][j] = x*min(dis[i][j],(int)1e18/x) - profit[i][j]; } } for(int k = 1;k <= n;k++){ for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ dis2[i][j] = min(dis2[i][j],dis2[i][k]+dis2[k][j]); } } } for(int i = 1;i <= n;i++) if(dis[i][i] < 0) return true; return false; } signed main(){ fastio cin >> n >> m >> k; for(int i = 1; i <= n; i++){ for(int j = 1;j <= k;j++){ dis[i][j] = 1e18; cin >> b[i][j] >> s[i][j]; //Meaning that the cost to buy item j in market i } } for(int i = 0;i < m;i++){ int u,v,w; cin >> u >> v >> w; dis[u][v] = w; } for(int k = 1;k <= n;k++){ for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ dis[i][j] = min(dis[i][j],dis[i][k]+dis[k][j]); } } } for(int i = 1;i <= n;i++){ for(int j = 1;j <= n;j++){ for(int x = 1; x <= k; x++){ if(s[j][x] == -1 || b[i][x] == -1) continue; profit[i][j] = max(profit[i][j],s[j][x]-b[i][x]); } } } int l = 1, r = 1e9; while(l+1 < r){ int mid = l+r>>1; if(!check(mid)) r = mid-1; else l = mid; } if(!check(r)) cout << r << "\n"; else cout << l << "\n"; }

컴파일 시 표준 에러 (stderr) 메시지

merchant.cpp: In function 'int main()':
merchant.cpp:68:20: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   68 |         int 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...