Submission #794306

#TimeUsernameProblemLanguageResultExecution timeMemory
794306TheSahibWiring (IOI17_wiring)C++14
20 / 100
37 ms13612 KiB
#include "wiring.h"
#include <bits/stdc++.h>

#define ll long long

using namespace std;

const int MAX = 1e3 + 5;

ll dp[MAX][MAX];

long long min_total_length(vector<int> r, vector<int> b) {
    if(b[0] > r[r.size() - 1]){
        if(r.size() < b.size()){
            swap(r, b);
            reverse(b.begin(), b.end());
        }
        int p1 = 0, p2 = 0;
        long long ans = 0;
        while(p1 != r.size() && p2 != b.size()){
            ans += abs(r[p1] - b[p2]);
            p1++;
            p2++;
        }
        while(p1 != r.size()){
            ans += min(abs(r[p1] - b[0]), abs(r[p1] - b.back()));
            p1++;
        }
        return ans;
    }
    
    for (int i = 0; i <= r.size(); i++)
    {
        dp[i][0] = 1e18;
    }
    for (int i = 0; i <= b.size(); i++)
    {
        dp[0][i] = 1e18;
    }
    dp[0][0] = 0;
    

    for (int i = 1; i <= r.size(); i++)
    {
        for (int j = 1; j <= b.size(); j++)
        {
            dp[i][j] = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i][j - 1])) + abs(r[i - 1] - b[j - 1]);
        }
    }
    return dp[r.size()][b.size()];
}

Compilation message (stderr)

wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:20:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |         while(p1 != r.size() && p2 != b.size()){
      |               ~~~^~~~~~~~~~~
wiring.cpp:20:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |         while(p1 != r.size() && p2 != b.size()){
      |                                 ~~~^~~~~~~~~~~
wiring.cpp:25:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |         while(p1 != r.size()){
      |               ~~~^~~~~~~~~~~
wiring.cpp:32:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |     for (int i = 0; i <= r.size(); i++)
      |                     ~~^~~~~~~~~~~
wiring.cpp:36:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = 0; i <= b.size(); i++)
      |                     ~~^~~~~~~~~~~
wiring.cpp:43:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for (int i = 1; i <= r.size(); i++)
      |                     ~~^~~~~~~~~~~
wiring.cpp:45:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         for (int j = 1; j <= b.size(); j++)
      |                         ~~^~~~~~~~~~~
#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...