1. 程式人生 > >Codeforces Round #516 (Div. 1, by Moscow Team Olympiad) C

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); }