Codeforces Round #516 (Div. 1, by Moscow Team Olympiad) C

题链

Description

  和交互库交互,你给出n个点,交互库指定颜色,求一条直线分割颜色。

Sol

 分别在x轴,y轴上二分即可。

Code

  

#include<bits/stdc++.h>
#define Mid (l+r>>1)
using namespace std;
int n,l,r;
char p1[102],p2[102],p3[102];
void work(int x,int pos,int g) {
    l=500000000;
    r=1000000000;
    for (int i=x;i<n;i++) {
        printf("%d %d\n",pos,Mid); fflush(stdout);
        scanf("%s",p3+1);
        if (p2[1]==p3[1]) l=Mid; else r=Mid;
    }
    if (p1[1]==p2[1]) {
        if (p2[1]==p3[1])
           printf("%d %d %d %d\n",pos,Mid+1,pos+1,500000000);
        else printf("%d %d %d %d\n",pos,Mid-1,pos+1,500000000);
    } else {
        if (p2[1]==p3[1])
          printf("%d %d %d %d\n",pos,Mid+1,pos-1,500000000);
        else printf("%d %d %d %d\n",pos,Mid-1,pos-1,500000000);
    }
    
//    if (p2[1]==p1[1]) {
//        printf("%d %d %d %d\n",pos-(!g),Mid+1,pos-(!g)+1,1000000000-Mid-1);
//    } else {
//        printf("%d %d %d %d\n",pos-(!g),Mid-1,pos-(!g)+1,1000000000-Mid+1);
//    }
    exit(0);
}
signed main () {
    scanf("%d",&n);
    printf("0 500000000\n");fflush(stdout);
    scanf("%s",p1+1);
    l=0;
    r=1000000000;
    for (int i=1;i<n;i++) {
        if (Mid-l>=5&&r-Mid>=5)  { printf("%d %d\n",Mid,500000000); fflush(stdout); } else work(i,Mid,p1[1]==p2[1]);
        scanf("%s",p2+1);
        if (p2[1]==p1[1]) l=Mid; else r=Mid;
    }
    if (p2[1]==p1[1])  printf("%d 40000000 %d 600000000",Mid,Mid+1);
    else  printf("%d 40000000 %d 600000000",Mid-1,Mid);
    fflush(stdout);
}

 

posted @ 2018-10-17 21:28  泪寒之雪  阅读(145)  评论(0编辑  收藏  举报