#include "cielib.h" #include <cstdio> using namespace std; bool V[ 1003 ]; int T[ 1003 ]; int Z[ 1003 ]; int T2[ 1003 ]; int main() { int d = podajD(); int r = podajR(); for ( int i=0; i<d; i++ ) { T[i]=0; V[i]=0; } int mx=0; for ( int oo=0; oo<d&&mx<r; oo++ ) { int p=0,k=d-1; //for ( int i=0; i<d; i++ ) printf("%d ",T[i]); printf("\n"); while ( p<k ) { int s = (p+k+1)>>1; for ( int i=0; i<d; i++ ) if (!V[i]) T2[i]=1; else T2[i]=T[i]+1; for ( int i=p; i<=k; i++ ) if (!V[i]) { T2[i]=((i<s)?0:1); } czyCieplo(T2); for ( int i=p; i<=k; i++ ) if (!V[i]) T2[i]=1; if (czyCieplo(T2)) k=s-1; else p=s; } //printf("uuuuu %d\n",p); int cc = p; if ( V[cc] ) { for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=0; znalazlem(T); } /*for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=1; T[cc]=0; czyCieplo(T); T[cc]=1; if ( !czyCieplo( T ) ) { for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=0; znalazlem(T); }//*/ for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=0; T[cc]=0; V[cc]=1; p = 0; k = r-mx; while ( p+1<k ) { int s = (p+k)>>1; czyCieplo( T ); for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]=T[i]+s; else T2[i]=0; int b1 = czyCieplo(T2); if ( b1 ) { for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]++; int b2 = czyCieplo(T2); if ( b2 ) p=s; else k=s; } else k=s; } //printf(" %d %d\n",p,k); if ( p != k ) { int s = k; for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]=T[i]+s; else T2[i]=0; czyCieplo(T2); for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]--; if ( !czyCieplo(T2) ) { for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]++; if ( czyCieplo(T2) ) p=k; } } for ( int i=0; i<d; i++ ) if ( V[i] ) T[i]+=p; mx+=p; //printf("aaaaaa %d %d\n",mx,cc); } //for ( int i=0; i<d; i++ ) printf("%d ",T[i]); printf("\n"); znalazlem( T ); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include "cielib.h" #include <cstdio> using namespace std; bool V[ 1003 ]; int T[ 1003 ]; int Z[ 1003 ]; int T2[ 1003 ]; int main() { int d = podajD(); int r = podajR(); for ( int i=0; i<d; i++ ) { T[i]=0; V[i]=0; } int mx=0; for ( int oo=0; oo<d&&mx<r; oo++ ) { int p=0,k=d-1; //for ( int i=0; i<d; i++ ) printf("%d ",T[i]); printf("\n"); while ( p<k ) { int s = (p+k+1)>>1; for ( int i=0; i<d; i++ ) if (!V[i]) T2[i]=1; else T2[i]=T[i]+1; for ( int i=p; i<=k; i++ ) if (!V[i]) { T2[i]=((i<s)?0:1); } czyCieplo(T2); for ( int i=p; i<=k; i++ ) if (!V[i]) T2[i]=1; if (czyCieplo(T2)) k=s-1; else p=s; } //printf("uuuuu %d\n",p); int cc = p; if ( V[cc] ) { for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=0; znalazlem(T); } /*for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=1; T[cc]=0; czyCieplo(T); T[cc]=1; if ( !czyCieplo( T ) ) { for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=0; znalazlem(T); }//*/ for ( int i=0; i<d; i++ ) if (!V[i]) T[i]=0; T[cc]=0; V[cc]=1; p = 0; k = r-mx; while ( p+1<k ) { int s = (p+k)>>1; czyCieplo( T ); for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]=T[i]+s; else T2[i]=0; int b1 = czyCieplo(T2); if ( b1 ) { for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]++; int b2 = czyCieplo(T2); if ( b2 ) p=s; else k=s; } else k=s; } //printf(" %d %d\n",p,k); if ( p != k ) { int s = k; for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]=T[i]+s; else T2[i]=0; czyCieplo(T2); for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]--; if ( !czyCieplo(T2) ) { for ( int i=0; i<d; i++ ) if ( V[i] ) T2[i]++; if ( czyCieplo(T2) ) p=k; } } for ( int i=0; i<d; i++ ) if ( V[i] ) T[i]+=p; mx+=p; //printf("aaaaaa %d %d\n",mx,cc); } //for ( int i=0; i<d; i++ ) printf("%d ",T[i]); printf("\n"); znalazlem( T ); return 0; } |