关于交互器

学术版

Spasmodic @ 2020-08-14 10:56:53

这是啥 怎么回事


by 朕在世界之巅 @ 2020-08-14 10:58:02

@happydef 宁同时编译的两个代码都有main……一个项目只能一个main……而且-o选项的后面应该是code.out吧?


by 朕在世界之巅 @ 2020-08-14 10:58:41

因为你要运行的是./code.out


by Spasmodic @ 2020-08-14 10:58:41

@朕在世界之巅 ???这是交互题……


by Spasmodic @ 2020-08-14 10:59:15

@朕在世界之巅 草?运行生成的可执行文件不就是code吗


by 朕在世界之巅 @ 2020-08-14 10:59:52

@happydef 编译什么也只能有1个main


by ubsan @ 2020-08-14 11:00:20

@happydef

code.cpp中不要有main(){}


by Spasmodic @ 2020-08-14 11:00:25

哦放一下代码

code.cpp:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=100005;
ll T,n,a[N],mn,mx;
void findGap(int T,int n){
    if(T==1){
        printf("? %lld %lld\n",LLONG_MIN,LLONG_MAX);
        fflush(stdout);
        fflush(stdin);
        scanf("%lld%lld",&a[1],&a[n]);
        for(ll i=2,j=n-1;i<=j;i++,j--){
            printf("? %lld %lld",a[i-1]+1,a[j+1]-1);
            fflush(stdout);
            fflush(stdin);
            scanf("%lld%lld",&a[i],&a[j]);
        }
        ll ans=0;
        for(ll i=1;i<n;i++)ans=max(ans,a[i+1]-a[i]);
        printf("! %lld\n",ans);
    }
}
int main(){
    fflush(stdin);
    scanf("%lld%lld",&T,&n);
    findGap(T,n);
    return 0;
}

grader.cpp:

#include <stdio.h>
#include <stdlib.h>

#include "gap.h"

static void my_assert(int k){ if (!k) exit(1); }

static int subtask_num, N;
static long long A[100001];
static long long call_count;

long long findGap(int, int);

void MinMax(long long s, long long t, long long *mn, long long *mx)
{
    int lo = 1, hi = N, left = N+1, right = 0;
    my_assert(s <= t && mn != NULL && mx != NULL);
    while (lo <= hi){
        int mid = (lo+hi)>>1;
        if (A[mid] >= s) hi = mid - 1, left = mid;
        else lo = mid + 1;
    }
    lo = 1, hi = N;
    while (lo <= hi){
        int mid = (lo+hi)>>1;
        if (A[mid] <= t) lo = mid + 1, right = mid;
        else hi = mid - 1;
    }
    if (left > right) *mn = *mx = -1;
    else{
        *mn = A[left];
        *mx = A[right];
    }
    if (subtask_num == 1) call_count++;
    else if (subtask_num == 2) call_count += right-left+2;
}

int main()
{
    FILE *in = stdin, *out = stdout;
    my_assert(2 == fscanf(in, "%d%d", &subtask_num, &N));
    my_assert(1 <= subtask_num && subtask_num <= 2);
    my_assert(2 <= N && N <= 100000);
    for (int i=1;i<=N;i++) my_assert(1 == fscanf(in, "%lld", A+i));
    for (int i=1;i<N;i++) my_assert(A[i] < A[i+1]);
    fprintf(out, "%lld\n", findGap(subtask_num, N));
    fprintf(out, "%lld\n", call_count);
}

by 朕在世界之巅 @ 2020-08-14 11:00:25

@happydef 如果您不加-o您会发现他生成了a.out


by Spasmodic @ 2020-08-14 11:00:57

@swift_zym 那咋搞


by 朕在世界之巅 @ 2020-08-14 11:00:57

@happydef 当你把两个source编译到一个target的时候只能有1个main


| 下一页