zoukankan      html  css  js  c++  java
  • Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem

    D. Dasha and Very Difficult Problem
    time limit per test:2 seconds
    memory limit per test:256 megabytes
    input:standard input
    output:standard output

    Dasha logged into the system and began to solve problems. One of them is as follows:

    Given two sequences a and b of length n each you need to write a sequence c of length n, the i-th element of which is calculated as follows: ci = bi - ai.

    About sequences a and b we know that their elements are in the range from l to r. More formally, elements satisfy the following conditions: l ≤ ai ≤ r and l ≤ bi ≤ r. About sequence c we know that all its elements are distinct.

    Dasha wrote a solution to that problem quickly, but checking her work on the standard test was not so easy. Due to an error in the test system only the sequence a and the compressed sequence of the sequence c were known from that test.

    Let's give the definition to a compressed sequence. A compressed sequence of sequence c of length n is a sequence p of length n, so that pi equals to the number of integers which are less than or equal to ci in the sequence c. For example, for the sequencec = [250, 200, 300, 100, 50] the compressed sequence will be p = [4, 3, 5, 2, 1]. Pay attention that in c all integers are distinct. Consequently, the compressed sequence contains all integers from 1 to n inclusively.

    Help Dasha to find any sequence b for which the calculated compressed sequence of sequence c is correct.

    Input

    The first line contains three integers nlr (1 ≤ n ≤ 105, 1 ≤ l ≤ r ≤ 109) — the length of the sequence and boundaries of the segment where the elements of sequences a and b are.

    The next line contains n integers a1,  a2,  ...,  an (l ≤ ai ≤ r) — the elements of the sequence a.

    The next line contains n distinct integers p1,  p2,  ...,  pn (1 ≤ pi ≤ n) — the compressed sequence of the sequence c.

    Output

    If there is no the suitable sequence b, then in the only line print "-1".

    Otherwise, in the only line print n integers — the elements of any suitable sequence b.

    Examples
    input
    5 1 5
    1 1 1 1 1
    3 1 5 4 2
    output
    3 1 5 4 2 
    input
    4 2 9
    3 4 8 9
    3 2 1 4
    output
    2 2 2 9 
    input
    6 1 5
    1 1 1 1 1 1
    2 3 5 4 1 6
    output
    -1
    Note

    Sequence b which was found in the second sample is suitable, because calculated sequencec = [2 - 3, 2 - 4, 2 - 8, 9 - 9] = [ - 1,  - 2,  - 6, 0] (note that ci = bi - ai) has compressed sequence equals to p = [3, 2, 1, 4].

    题意:

    给你序列p和序列a,让你找一个合法的序列b,输出。

    序列c是通过bi-ai来得到的。

    序列p是通过离散化序列c来得到的。(离散化c序列,就是将c序列中的数字从小到大编号)

    #include <iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    struct node
    {
        int id,num;
    }a[100005];
    int b[100005],k[100005];
    int n,l,r;
    bool cmp(node a,node b)
    {
        return a.id>b.id;
    }
    int main()
    {
        scanf("%d%d%d",&n,&l,&r);
        for(int i=1;i<=n;i++) scanf("%d",&a[i].num);
        for(int i=1;i<=n;i++) {scanf("%d",&a[i].id); k[i]=a[i].id;}
        sort(a+1,a+n+1,cmp);
        b[1]=r;
        bool flag=1;
        for(int i=2;i<=n;i++)
        {
            /*
            if (b[i-1]-a[i-1].num-1+a[i].num<l ||
                    b[i-1]-a[i-1].num-1+a[i].num>r)
            {
                flag=0;
                break;
            }
           b[i]=b[i-1]-a[i-1].num-1+a[i].num;
           //以上是错误的,只考虑了差是连续,若是不连续没考虑。
           */
           if (b[i-1]-a[i-1].num-1+a[i].num>=l)
           {
               b[i]=b[i-1]-a[i-1].num-1+a[i].num;
               if (b[i]>r) b[i]=r;  //使差减小得更多。
           }
           else  { flag=0; break; }
        }
        if (!flag) printf("-1");
           else{
                 for(int i=1;i<=n;i++)
                 {
                     if (i-1) printf(" ");
                     printf("%d",b[n-k[i]+1]);
                 }
               }
         printf("
    ");
        return 0;
    }
  • 相关阅读:
    关于同余最短路
    【水】关于 __attribute__
    题解【AtCoder
    一些简单图论问题
    浅谈简单动态规划
    关于博客园主题(美化博客园)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第47章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第46章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第45章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第44章 读书笔记(待更新)
  • 原文地址:https://www.cnblogs.com/stepping/p/6364257.html
Copyright © 2011-2022 走看看