Submission #42829

# Submission time Handle Problem Language Result Execution time Memory
42829 2018-03-04T17:52:48 Z nonocut Wiring (IOI17_wiring) C++14
7 / 100
1000 ms 17164 KB
#include "wiring.h"
#include<bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define ll long long
const int maxn = 2e5 + 5;
const ll inf = 1e9;
int n,m,sz;
int pos[maxn];
ll num[maxn], sum[maxn];
ll dp[maxn];
map<int,int> id;
ll get(int l1, int r1, int l2, int r2) {
    ll res = (sum[r2]-sum[l2-1]) - (sum[r1]-sum[l1-1]);
    res += max(0LL,(num[r2]-num[l2-1])-(num[r1]-num[l1-1]))*(-(sum[r1]-sum[r1-1]));
    res += max(0LL,(num[r1]-num[l1-1])-(num[r2]-num[l2-1]))*(sum[l2]-sum[l2-1]);
//    printf("----- get (%d, %d) (%d, %d) = %lld\n",l1,r1,l2,r2,res);
    return res;
}
void cpidx(vi a, vi b) {
    for(auto x : a) id[x];
    for(auto x : b) id[x];
    for(auto &t : id) t.second = ++sz;
}
ll min_total_length(vi a, vi b) {
    n = a.size(); m = b.size();
    cpidx(a,b);
    for(auto x : a) pos[id[x]] = 0, num[id[x]] = 1, sum[id[x]] = x;
    for(auto x : b) pos[id[x]] = 1, num[id[x]] = 1, sum[id[x]] = x;
    for(int i=1;i<=sz;i++) num[i] += num[i-1], sum[i] += sum[i-1];
    for(int x=sz;x>=1;x--) {
        dp[x] = inf;
        int i = -1;
        ll cur = dp[x+1];
        for(int y=x+1;y<=sz;y++) {
//            printf("\tx = %d y = %d\n",x,y);
            if(pos[y]!=pos[y-1]) {
                if(i==-1) i = y;
                else break;
            }
            cur = min(cur, dp[y+1]);
            if(i!=-1) {
                dp[x] = min(dp[x], get(x,i-1,i,y) + cur);
            }
        }
//        printf("dp %d = %lld\n",x,dp[x]);
    }
    return dp[1];
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 248 KB Output is correct
2 Correct 1 ms 352 KB Output is correct
3 Correct 2 ms 424 KB Output is correct
4 Correct 1 ms 532 KB Output is correct
5 Correct 2 ms 656 KB Output is correct
6 Correct 1 ms 656 KB Output is correct
7 Correct 2 ms 700 KB Output is correct
8 Correct 2 ms 736 KB Output is correct
9 Correct 2 ms 740 KB Output is correct
10 Correct 2 ms 744 KB Output is correct
11 Correct 2 ms 748 KB Output is correct
12 Correct 2 ms 752 KB Output is correct
13 Correct 2 ms 828 KB Output is correct
14 Correct 2 ms 832 KB Output is correct
15 Correct 2 ms 840 KB Output is correct
16 Correct 2 ms 840 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 840 KB Output is correct
2 Correct 2 ms 840 KB Output is correct
3 Execution timed out 1065 ms 12400 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12400 KB Output is correct
2 Correct 2 ms 12400 KB Output is correct
3 Incorrect 181 ms 17164 KB 3rd lines differ - on the 1st token, expected: '1068938599', found: '1000000000'
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 17164 KB Output is correct
2 Execution timed out 1071 ms 17164 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 248 KB Output is correct
2 Correct 1 ms 352 KB Output is correct
3 Correct 2 ms 424 KB Output is correct
4 Correct 1 ms 532 KB Output is correct
5 Correct 2 ms 656 KB Output is correct
6 Correct 1 ms 656 KB Output is correct
7 Correct 2 ms 700 KB Output is correct
8 Correct 2 ms 736 KB Output is correct
9 Correct 2 ms 740 KB Output is correct
10 Correct 2 ms 744 KB Output is correct
11 Correct 2 ms 748 KB Output is correct
12 Correct 2 ms 752 KB Output is correct
13 Correct 2 ms 828 KB Output is correct
14 Correct 2 ms 832 KB Output is correct
15 Correct 2 ms 840 KB Output is correct
16 Correct 2 ms 840 KB Output is correct
17 Correct 1 ms 840 KB Output is correct
18 Correct 2 ms 840 KB Output is correct
19 Execution timed out 1065 ms 12400 KB Time limit exceeded
20 Halted 0 ms 0 KB -