Submission #59101

# Submission time Handle Problem Language Result Execution time Memory
59101 2018-07-20T14:31:52 Z wilwxk Travelling Merchant (APIO17_merchant) C++11
0 / 100
1000 ms 3448 KB
#include <bits/stdc++.h>
using namespace std;

const int MAXN=105;
const int MAXK=1005;
const long long INF=1e18+9;
long long v[MAXN][MAXK][2];
long long dist[MAXN][MAXN], prof[MAXN][MAXN];
long long g[MAXN][MAXN];
int n, m, k;

void floyd() {
    for(int kk=1; kk<=n; kk++) {
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=n; j++) {
                dist[i][j]=min(dist[i][j], dist[i][kk]+dist[kk][j]);
            }
        }
    }
}

bool testa(long long x) {
    for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) g[i][j]=INF;
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=n; j++) {
            if(dist[i][j]==INF||i==j) continue;
            g[i][j]=((x*dist[i][j])/100)-prof[i][j];
        }
    }

    for(int kk=1; kk<=n; kk++) {
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=n; j++) {
                g[i][j]=min(g[i][j], g[i][kk]+g[kk][j]);
            }
        }
    }

    for(int i=1; i<=n; i++) if(g[i][i]>0) return 0;
    return 1;
}

int main() {
    scanf("%d %d %d", &n, &m, &k);
    for(int i=1; i<=n; i++) for(int j=1; j<=k; j++) scanf("%lld %lld", &v[i][j][0], &v[i][j][1]);
    for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) dist[i][j]=INF;
    while(m--) {
        int a, b, c; scanf("%d %d %d", &a, &b, &c);
        dist[a][b]=c;
    }

    floyd();

    for(int i=1; i<=n; i++) {
        for(int j=1; j<=n; j++) {
            for(int kk=1; kk<=k; kk++) {
                prof[i][j]=0; if(dist[i][j]==INF) continue;
                if(v[i][kk][0]==-1||v[j][kk][1]==-1||v[j][kk][1]<v[i][kk][0]) continue;
                prof[i][j]=max(prof[i][j], v[j][kk][1]-v[i][kk][0]);
            }
        }
    }

    long long resp=0;
    for(long long i=INF; i>0; i/=2) while(testa(resp+i)) resp+=i;
    resp++; resp/=100;

    printf("%d\n", resp);

}

Compilation message

merchant.cpp: In function 'int main()':
merchant.cpp:68:24: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long long int' [-Wformat=]
     printf("%d\n", resp);
                        ^
merchant.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %d", &n, &m, &k);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
merchant.cpp:45:58: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(int i=1; i<=n; i++) for(int j=1; j<=k; j++) scanf("%lld %lld", &v[i][j][0], &v[i][j][1]);
                                                     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
merchant.cpp:48:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         int a, b, c; scanf("%d %d %d", &a, &b, &c);
                      ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Execution timed out 1079 ms 3448 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 27 ms 3448 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1070 ms 3448 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 27 ms 3448 KB Output isn't correct
2 Halted 0 ms 0 KB -