竞赛讨论区 > 为什么总是格式错误呢?(样例都过)
头像
潘小蓝
发布于 2019-08-02 14:27
+ 关注

为什么总是格式错误呢?(样例都过)

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn = 10000005;
long long dot[100005];
int flag[maxn];
long long dot1[100005];
int main(void) {
    int n;
    long long a,b;
    bool flag1 = false;
    scanf("%d%lld%lld",&n,&a,&b);
        memset(dot,0,sizeof(dot));
        memset(flag,INF,sizeof(flag));
        memset(dot1,0,sizeof(dot1));
        for(int i = 1; i <= n; i ++) {
            scanf("%lld",&dot[i]);
            dot1[i] = dot[i];
            flag[dot[i]] = -2;
        }
        sort(dot + 1, dot + n + 1);
        if(dot[1] + dot[n] > a && dot[1] + dot[n] > b) {
            printf("NO\n");
            return 0; 
        }
        for(int i = 1; i <= n; i ++) {
            if(flag[dot[i]]== 0 || flag[dot[i]]== -1) {
                continue;
            }
            if(dot[i] && flag[b-dot[i]] == -2)  {
                int value = b-dot[i];
                flag[dot[i]]= -1;
                flag[value]= -1;
            } else if(dot[i] && flag[a-dot[i]]== -2) {
                int value = a-dot[i];
                flag[dot[i]]= 0;
                flag[value]= 0;
            } else {
                flag1 = true;
                break;
            }
        }
        if(!flag1) {
            printf("YES\n");
            for(int i = 1; i <= n; i ++) {
                if(flag[dot1[i]] == -1) flag[dot1[i]] = 1;
                printf("%lld",flag[dot1[i]]);
                printf(" ");
            }
            printf("\n");
        }
        else{
            printf("NO\n");
        }
    return 0;

全部评论

(2) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐