#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; } |
English