整天自闭。
A:有各种讨论方式。我按横坐标排了下然后讨论了下纵坐标单调和不单调两种情况。写了15min也就算了,谁能告诉我printf和cout输出不一样是咋回事啊?又调了10min啊?upd:突然想起来我好像define int long long了
#include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #define int long long char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;} int gcd(int n,int m){return m==0?n:gcd(m,n%m);} int read() { int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f; } int n; struct data { int x,y; bool operator <(const data&a) const { return x<a.x||x==a.x&&y<a.y; } bool operator ==(const data&a) const { return x==a.x&&y==a.y; } }a[3],ans[1000000]; signed main() { #ifndef ONLINE_JUDGE freopen("a.in","r",stdin); freopen("a.out","w",stdout); const char LL[]="%I64d\n"; #endif for (int i=0;i<3;i++) a[i].x=read(),a[i].y=read(); sort(a,a+3); if (a[0].y<=a[1].y==a[1].y<=a[2].y) { for (int i=min(a[0].y,a[1].y);i<=max(a[0].y,a[1].y);i++) ans[++n].x=a[0].x,ans[n].y=i; for (int i=a[0].x;i<=a[1].x;i++) ans[++n].x=i,ans[n].y=a[1].y; for (int i=min(a[1].y,a[2].y);i<=max(a[1].y,a[2].y);i++) ans[++n].x=a[1].x,ans[n].y=i; for (int i=a[1].x;i<=a[2].x;i++) ans[++n].x=i,ans[n].y=a[2].y; } else { for (int i=a[0].x;i<=a[1].x;i++) ans[++n].x=i,ans[n].y=a[0].y; for (int i=min(a[1].y,a[0].y);i<=max(a[1].y,a[0].y);i++) ans[++n].x=a[1].x,ans[n].y=i; for (int i=min(a[0].y,a[2].y);i<=max(a[0].y,a[2].y);i++) ans[++n].x=a[1].x,ans[n].y=i; for (int i=a[1].x;i<=a[2].x;i++) ans[++n].x=i,ans[n].y=a[2].y; } sort(ans+1,ans+n+1); n=unique(ans+1,ans+n+1)-ans-1; cout<<n<<endl; for (int i=1;i<=n;i++) cout<<ans[i].x<<' '<<ans[i].y<<endl; return 0; }